Pbinfo #2017
Cerinta
Să se răspundă la Q întrebări de forma: “Care este numărul natural minim x astfel încât cifra c să apară de cel puțin K ori în reprezenatrea tuturor numerelor naturale nenule mai mici sau egale cu x?”
Exemplu
2017.in
5
1 7
5 5
5 11
1 1
6 13
2017.out
14
45
55
1
66
Explicatie: Pentru prima întrebare cifra 1 apare de 7 ori în secvența 1, 10, 11, 12, 13, 14. Deci răspunsul va fi 14.
Am facut algoritmul, dar imi da 0 puncte
#include
#include
using namespace std;
int main()
{
int c, k, i, p, n, n2, j, Q;
ifstream f ("2017.in");
ofstream g ("2017.out");
f >> Q;
i=0; n=1;
for ( j=1;j<=Q;j++ )
{
i=0; n=1;
f >> c >> k;
while ( i
{
n2=n;
while ( n2 )
{
p=n2%10;
if ( p==c )
i++;
n2=n2/10;
}
n++;
}
g << n-1;
}
f.close();
g.close();
return 0;
}
Răspunsuri la întrebare
Codul asta merge numai ca e foarte ineficient, pe pbinfo s-ar putea sa nu
iti dea la timp daca te intereseaza scorul... incerc sa vin cu o alta idee, se rezolva matematic oricum
#include <fstream>
using namespace std;
int f(int n, int c){
int counter = 0;
while(n){
if(n%10 == c){
counter++;
}
n/=10;
}
return counter;
}
int main(){
ifstream fin("2017.in",ios::in);
ofstream fout("2017.out",ios::out);
int q; fin>>q;
while(q){
int c,k; fin>>c>>k;
if(k==1) {
fout<<1<<endl;
q--;
continue;
}
int times=0;
int i;
for(i = 0; times<k; i++){
times+=f(i,c);
}
fout<<--i<<endl;
q--;
}
fin.close();
fout.close();
}