#c #c 11 #vector
#c #c 11 #вектор #c 11
Вопрос:
/*
// Sample code to perform I/O:
#include <iostream>
using namespace std;
int main() {
int num;
cin >> num; // Reading input from STDIN
cout << "Input number is " << num << endl; // Writing output to STDOUT
}
// Warning: Printing unwanted or ill-formatted data to output will cause the test cases to fail
*/
// Write your code here
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
using namespace std;
typedef long long int ll;
vector<ll> v;
void make(ll num)
{
if(num>10000000000)
return ;
if(num!=0)
v.insert(num);
make(num*10 4);
make(num*10 7);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll num=0;
make(num);
ll n,ans=0;
cin>>n;
for(auto i:v)
{
for(auto j:v)
{
if(i<=namp;amp;j<=namp;amp;j>=i)
{
if(__gcd(i,j)==1)
ans ;
}
}
}
cout<<ans<<endl;
return 0;
}
Ошибка:
In function 'void make(ll)':
30:21: error: no matching function for call to 'std::vector<long long int>::insert(llamp;)'
69:0,
20:
114:5: note: candidate: std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, const value_typeamp;) [with _Tp = long long int; _Alloc = std::allocator<long long int>; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >; typename std::_Vector_base<_Tp, _Alloc>::pointer = long long int*; std::vector<_Tp, _Alloc>::const_iterator = __gnu_cxx::__normal_iterator<const long long int*, std::vector<long long int> >; typename __gnu_cxx::__alloc_traits<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type>::const_pointer = const long long int*; std::vector<_Tp, _Alloc>::value_type = long long int]
:
114:5: note: candidate expects 2 arguments, 1 provided
64:0,
20:
1042:7: note: candidate: std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, std::vector<_Tp, _Alloc>::value_typeamp;amp;) [with _Tp = long long int; _Alloc = std::allocator<long long int>; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >; typename std::_Vector_base<_Tp, _Alloc>::pointer = long long int*; std::vector<_Tp, _Alloc>::const_iterator = __gnu_cxx::__normal_iterator<const long long int*, std::vector<long long int> >; typename __gnu_cxx::__alloc_traits<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type>::const_pointer = const long long int*; std::vector<_Tp, _Alloc>::value_type = long long int]
1042:7: note: candidate expects 2 arguments, 1 provided
1059:7: note: candidate: std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, std::initializer_list<_Tp>) [with _Tp = long long int; _Alloc = std::allocator<long long int>; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >; typename std::_Vector_base<_Tp, _Alloc>::pointer = long long int*; std::vector<_Tp, _Alloc>::const_iterator = __gnu_cxx::__normal_iterator<const long long int*, std::vector<long long int> >; typename __gnu_cxx::__alloc_traits<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type>::const_pointer = const long long int*]
1059:7: note: candidate expects 2 arguments, 1 provided
1084:7: note: candidate: std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, std::vector<_Tp, _Alloc>::size_type, const value_typeamp;) [with _Tp = long long int; _Alloc = std::allocator<long long int>; std::vector<_Tp, _Alloc>::iterator = __gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >; typename std::_Vector_base<_Tp, _Alloc>::pointer = long long int*; std::vector<_Tp, _Alloc>::const_iterator = __gnu_cxx::__normal_iterator<const long long int*, std::vector<long long int> >; typename __gnu_cxx::__alloc_traits<typename std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type>::const_pointer = const long long int*; std::vector<_Tp, _Alloc>::size_type = long unsigned int; std::vector<_Tp, _Alloc>::value_type = long long int]
1084:7: note: candidate expects 3 arguments, 1 provided
1128:2: note: candidate: template<class _InputIterator, class> std::vector<_Tp, _Alloc>::iterator std::vector<_Tp, _Alloc>::insert(std::vector<_Tp, _Alloc>::const_iterator, _InputIterator, _InputIterator) [with _InputIterator = _InputIterator; <template-parameter-2-2> = <template-parameter-1-2>; _Tp = long long int; _Alloc = std::allocator<long long int>]
1128:2: note: template argument deduction/substitution failed:
30:21: note: candidate expects 3 arguments, 1 provided<br>
Как решить проблему
Комментарии:
1. функция
iterator insert( iterator pos, const Tamp; value );
принимает итератор и значение2. В векторе нет функции, вызываемой insert. Что такое __gcd? Это пользовательская функция, созданная вами?
3. Взгляните на документацию для
std::vector::insert
.4. Комментарий @Sumeet, G.M. содержит ссылку, которая доказывает, что вы неправы.
5.
typedef long long int ll;
— Я слишком часто вижу этот сумасшедший макрос. Почему бы просто не использоватьint64_t
вместо этого? Это более точно описывает тот тип целого числа, который вы хотите использовать, и не является чем-то похожим на число11
.
Ответ №1:
В функции make() попробуйте использовать v.push_back(num)
вместо v.insert(num)
, это должно сработать.
Ответ №2:
У вас отсутствует первый параметр в вашем vector::insert
, позиция, после которой должен быть размещен новый элемент. Если вы не хотите использовать vector::push_back
, как было предложено в предыдущем ответе, вот MWE:
#include<iostream>
#include<string>
#include<vector>
#include <algorithm>
using namespace std;
typedef long long int ll;
vector<ll> v;
void make(ll num)
{
if(num>10000000000)
return;
if(num!=0)
v.insert(v.begin(),num); // iterator to insert position added
make(num*10 4);
make(num*10 7);
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll num=0;
make(num);
ll n,ans=0;
cout << "Input number: " << endl;
cin>>n;
for(auto i:v)
{
for(auto j:v)
{
if(i<=namp;amp;j<=namp;amp;j>=i)
{
if(__gcd(i,j)==1)
ans ;
}
}
}
cout<< "answer = " << ans <<endl;
return 0;
}
Для чего это? Генератор случайных чисел?
Комментарии:
1. найдите взаимно простое число, где два числа состоят только из ‘4’ и ‘7’