Pagini recente » Cod sursa (job #1578635) | Cod sursa (job #2014663) | Cod sursa (job #2085262) | Cod sursa (job #1218364) | Cod sursa (job #993890)
Cod sursa(job #993890)
#include <iostream>
#include <fstream>
#include <vector>
#include <cstring>
#define vecin vector <int>
using namespace std;
vecin n,d,vprim;
vecin add(vecin a, vecin b){
int t=0;
for (int i=b[0]+1; i<=a[0]; i++) b.push_back(0);
for (int i=1; i<=a[0]; i++){
a[i]+=b[i]+t;
t=a[i]/10;
a[i]%=10;
}
if (t>0) a[0]++, a.push_back(0), a[a[0]]=t;
return a;
}
unsigned long long divide(vecin a, unsigned long long x){
int t=0;
unsigned long long r=0;
for (int i=a[0]; i>=1; i--)
r=(10*r+a[i])%x;
return r;
}
int count_d(unsigned long long x){
unsigned long long k=0,j=x;
while (j) {
j=int(j/10);
k++;
}
return k;
}
int main()
{
string s;
short f=10;
int l,k=0,c=1;
unsigned long long dprim,rest,si=0;
ifstream in("next.in");
ofstream out("next.out");
in >> s;
l=int(s.size());
for (int i=1; i<=l; i++)
swap(s[i], s[0]);
n.push_back(l);
for (int i=l; i>=1; i--)
n.push_back(int(s[i])-48);
in >> dprim;
rest=divide(n, dprim);
dprim=dprim-rest;
k=count_d(dprim);
d.push_back(k);
while (dprim>0){
si=si*10+dprim%10;
dprim=int(dprim/10);
}
for (int i=2; i<=k; i++) c*=10;
for (int i=1; i<=k; i++)
d.push_back(int(si/c)%f), c/=10;
n=add(n, d);
for (int i=n[0]; i>=1; i--)
out << n[i];
return 0;
}