//利用竖除法来 进行大数除法
//不管是111/31还是1111/31又或者是11111111111111/31
//运算的时候都是在前一个光棍数/31的商添加上新增的余数的运算
//一切光棍数/31都可以追溯到111/31的商,即一个大于31的光棍数,在它与31的商的基础上做变化
//都是先111/31,得到18,然后补1,得到181,再除再补1,一直到余数为0
//循环这两个步骤
//1./31
//2.+1
#include <string>
#include <iostream>
using namespace std;
int main() {
int x;
cin >> x;
int num=0,cnt=0;//光棍数,位数
while (x > num) {//得到第一个大于或等于x的光棍数
num = num * 10 + 1;
cnt++;
}
while (true) {
cout << num / x;
num = num % x;
if (num == 0)break;
//找到能整除的第一个光棍数了,也就是再前面光棍数/31的基础上,它的余数能/31
else {
num = num * 10 + 1;
cnt++;
}
}
cout <<" "<< cnt;
return 0;
}
|大数运算_竖式除法|L1-046 整除光棍 (20分)
最新推荐文章于 2022-01-30 15:49:02 发布