总时间限制:
1000ms
内存限制:
65536kB
描述
输入一个大于0的大整数N,长度不超过100位,要求输出其除以13得到的商和余数。
输入
一个大于0的大整数,长度不超过100位。
输出
两行,分别为整数除法得到的商和余数。
样例输入
2132104848488485
样例输出
164008065268345 0
提示
模拟除法运算,商的长度应该比输入大整数的长度少1或2。
这里高精度的话,我就写了一个这题题目的AC的代码,代码有比较详细的注释,可以当作模板来使用
#include<bits/stdc++.h>
using namespace std;
string s1;
int a[110];
int r[100];
int main()
{
cin>>s1;
int len=s1.length();//字符串的长度
for(int i=1;i<=len;i++) //从1到n
{
a[i]=s1[i-1]-'0';
}
a[0]=len; //数字的长度
int t=0; //余数
for(int i=1;i<=a[0];i++)
{
t=t*10+a[i]; //当前的值
r[i]=t/13; //当前所在位的商
t=t%13; //余数
}
int k=1; //从第一位开始
while(k<a[0]&&r[k]==0) k++; //去除前导零
for(int i=k;i<=a[0];i++)
{
cout<<r[i]; //输出商
}
cout<<endl<<t<<endl; //输出余数
return 0;
}