[刷题] PTA 7-42 整除光棍

模拟除法

 1 #include <stdio.h>
 2 int main()
 3 {
 4     char a[1000];//创建存表
 5     int len=0,count=0;
 6     int n;
 7     int t=1;
 8     scanf("%d",&n);
 9     while(1)
10     {
11         count++;
12         if(len||t/n)//商第一位为0,不存入数组中
13         {
14             a[len]='0'+t/n;//把数字变为字符存储
15             len++;
16         }
17         t%=n;//取余数
18         if(t==0)//判断余数是否为零,余数为0结束
19         {
20 
21             a[len]='';//输入数组终止符
22             printf("%s %d",a,count);
23             break;
24         }
25         t=t*10+1;
26     }
27     return 0;
28 }

分析:

1、要除的大数可能超过int或long的范围,所以要用string存储

2、模拟除法:把手算除法每一步进行分解,存储每步的计算结果和余数即可,这样每次处理的就是一个很小的数

原文地址:https://www.cnblogs.com/cxc1357/p/10730401.html