高逐位相除(含详解)

2022-05-19 17:16:20   文档大全网     [ 字体: ] [ 阅读: ]

#文档大全网# 导语】以下是®文档大全网的小编为您整理的《高逐位相除(含详解)》,欢迎阅读!
相除,详解,高逐位
高逐位相除(含详解)



#include using namespace std; int main() { int i,j,m,n,r,s; cin>>n; int a[n+1]={0};

m=1;//m:表示前i位能否被i整除(1表示能,0表示不能) i=1;//i表示位数,i=1表示前1位,i=5表示前5 a[1]=1;//a[1]的取值是从19 while(a[1]<=9) {

if(m&&ii位可以被i整除时,看第i+1 i++;

s=0;//s表示前i位的数为多少 for(j=1;j<=i;j++) { s=s*10+a[j];//计算前i位的和 s=s%i;//也是算前i位除以i的余数 }

//若将此句写在循环外面,则s会存储一个24位的数,内存不够 if(s!=0)//i位不能被i整除 { m=0; a[i]++;//21不能被前两位整除时,试试22 while(a[i]>9&&i>1)//29不能被前两位整除时,尝试30 { //i>1:a[1]>9时,就说明没有这样的数,只能在第2-n位之间运算 a[i]=0; i--;//i位已经遍历过1-9,换成第i-1位遍历 a[i]++;// } } else { m=1;//i位可以被i整除 } if(m&&i==n) { for(j=1;j<=n;j++) cout<


}

cout<找到一个 a[i]++;//再对下一个进行遍历 } }

return 0;


本文来源:https://www.wddqxz.cn/521fddb2f66527d3240c844769eae009591ba2ea.html

相关推荐