题目如下:
27:除以13
查看提交统计提问
总时间限制: 1000ms 内存限制: 65536kB
描述
输入一个大于0的大整数N,长度不超过100位,要求输出其除以13得到的商和余数。
输入
一个大于0的大整数,长度不超过100位。
输出
两行,分别为整数除法得到的商和余数。
样例输入
2132104848488485
样例输出
164008065268345
0
提示
模拟除法运算,商的长度应该比输入大整数的长度少1或2。
我的想法是每个数组内储存2位数(除开头外,但oj只有60分,可以告诉我哪出错了吗?
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
using namespace std;
int a[101],c[101],temp[101],x,t = 1;
void init()
{
string a1;
cin >> a1;
int lena = a1.size();
a[0] = lena;
for(int i = 1; i <= a[0]; i++) temp[i] = a1[i - 1] - '0';
for(int i = a[0]; i >= 1; i -= 2)
{
if(i != 1)
a[t++] = temp[i - 1] * 10 +temp[i];
else
a[t++] = temp[i];
}
//for(int i = 1; i <= lena / 2 + 1; i++)
// cout << a[i] << " ";
//cout << endl;
}
void print() //多余的前导0?
{
if(c[t - 1] || t - 1 == 1) cout << c[t - 1];
for(int i = t - 2; i > 0; i--)
{
if(c[i] == 0) cout << "00";
else cout << c[i];
}
cout << "\n" << x;
}
int main()
{
init();
for(int i = t - 1; i > 0; i--)
{
c[i] = (a[i] + x * 100) / 13; //printf("c[%d] = %d\n",i,c[i]);
x = (a[i] + x * 100) % 13; //printf("x = %d\n",x);
}
print();
}