Cod sursa(job #43951)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 30 martie 2007 18:30:29
Problema Next Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <string.h>

    long long d,i,l,nr,r;
    long n[1000002];
    char ch[1000002];

int main(){
    freopen("next.in","r",stdin);
    freopen("next.out","w",stdout);
    
    scanf("%s",ch);
    scanf("%I64d",&d);
    
    nr=0;
    l=strlen(ch);
    for (i=0;i<l;i++)n[l-i]=ch[i]-'0';
    if (l<=16)for (i=0;i<l;i++)nr=nr*10+(ch[i]-'0');
    
    if ((nr&&nr>d)||l>17){
       r=0;   
       for (i = 0; i < l; i++)   
              r= ((long long)r* 10 + ch[i]-'0') % d;   
       if (r){
          r=d-r;
          for (i=1;i<=l;i++){
              if(r){n[i]=n[i]+r%10;r=r/10;}
              if (n[i]>=10){n[i+1]=n[i+1]+n[i]/10;n[i]%=10;if(i==l)l++;}
          }
       }
       for (i=l;i>=1;i--)printf("%ld",n[i]);
       printf("\n");
    }
    else printf("%I64d\n",d);
    
    return 0;
}