Cod sursa(job #257026)

Utilizator SheepBOYFelix Liviu SheepBOY Data 12 februarie 2009 18:25:13
Problema Next Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
class GigaNumber
{
public:
	int overflow,number[1000000];
	void operator++()
	{
		int i;
		++number[i];
		if(number[i]>9)
			{
				number[i]%=10;
				++number[i+1];
				if(overflow==i+1)
					++overflow;
			}
			++i;
		while(number[i]>9)
		{
			if(number[i]>9)
			{
				number[i]%=10;
				++number[i+1];
				if(overflow==i+1)
					++overflow;
			}
			++i;
		}
	}
};
GigaNumber n; 
int imparte(GigaNumber a,long long dp)
{
	int i;
	long long aux=0;
	while(i<a.overflow)
	{
		while(aux<dp)
		{
			aux=aux*10+a.number[i];
			++i;
		}
		aux/=dp;
	}
	if(aux==1)
		return 1;
	else
		return 0;
}
void outfile(GigaNumber a)
{
	for(int i=0;i<a.overflow;++i)
		printf("%d",a.number[i]);
}
int main()
{
	char buffer[1000000];
	int nr,i;
	long long dimprt=0;
	freopen("next.in","r",stdin);
	freopen("next.out","w",stdout);
	gets(buffer);
	for(i=0;buffer[i];++i)
	n.number[i]=buffer[i]-48;
	n.overflow=i;
	scanf("%lld",&dimprt);
	while(!imparte(n,dimprt))
		++n;
	outfile(n);
}