Uva 725 除法
生活随笔
收集整理的這篇文章主要介紹了
Uva 725 除法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
紫書P182
直接枚舉?0~9 的全排列會超時,枚舉fghij就可以了,計算出 abcde ,這里有一個新的函數,也可以不用咯,把每一位數據提取出來,while循環可以做到,這里的新的函數是,sprintf(buf,"%5d%5d",abcde,fghij); 格式化提取,把abcde,fghij每一位提取到字符串buf中,不足5位的補0。然后看每一個位是否都有。都有就是一個0~9的全排列。
/*#include <stdio.h> #include <algorithm>using namespace std;int main() {int n;int a[10] = {0,1,2,3,4,5,6,7,8,9};while(scanf("%d",&n),n) {bool flag = false;do {int s = 0;for(int i=0;i<5;i++) {s = s*10 + a[i];}int t = 0;for(int i=5;i<10;i++) {t = t*10 + a[i];}if(s%t==0&&s/t==n) {flag = 1;printf("%d%d%d%d%d / %d%d%d%d%d = %d\n",a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],n);}}while(next_permutation(a,a+10));if(!flag)printf("There are no solutions for %d.\n",n);}return 0; } */#include <cstdio> #include <cstring> #include <algorithm>using namespace std;int main() {//freopen("in.txt","r",stdin);int n;int kase = 0;char buf[99];while(scanf("%d",&n),n) {if(kase++)printf("\n");int cnt = 0;for(int fghij = 1234;;fghij++) {int abcde = fghij*n;sprintf(buf,"%05d%05d",abcde,fghij);if(strlen(buf)>10) break;sort(buf,buf+10);bool ok = true;for(int i=0;i<10;i++) {if(buf[i]!='0'+i) ok = false;}if(ok) {cnt++;printf("%05d / %05d = %d\n",abcde,fghij,n);}}if(!cnt)printf("There are no solutions for %d.\n",n);}return 0; } View Code?
轉載于:https://www.cnblogs.com/TreeDream/p/6034888.html
總結
以上是生活随笔為你收集整理的Uva 725 除法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 招联金融对征信的影响
- 下一篇: 随笔1106-练习例题