1.除法uva725
题面:输入正整数n,按从小到大顺序输出所有形如abcde/fghij=n的表达式,其中aj恰好为09的一个排列,可以有前导零
注意点:
- 前导零只可能出现在除数中,即被除数为和除数最多为五位数
- 通过对除数进行dfs枚举,并记录该枚举方案是否有前导零,计算得到被除数,再检验每一个数字是否存在即可
[code]#includeusing namespace std;int n;bool vis[10],flag;int v[10];int check(int a,int b){ memset(v,0,sizeof v); int m; if(((a / 100000) > 0) || ((b / 100000) > 0))return 0; while(a){ m = a % 10; a /= 10; v[m] += 1; } while(b){ m = b % 10; b /= 10; v[m] += 1; } if(v[0] > 1)return 0; for(int i = 1; i = tot){ int m = n * now; if(check(m,now)){ if(check(m,now) == 1)printf("%d / %d = %d\n",m,now,n); else printf("%d / 0%d = %d\n",m,now,n); flag = 1; } return; } for(int i = 0; i > n){ if(n == 0){ break; } if(cnt != 1)puts(""); flag = 0; for(int i = 1; i = y,使1/k = 1/x + 1/y</p><ol>初看此题,容易直接将分数运算转换为浮点运算,然而限于精度等问题,这种思路是行不通的,因此,可以尝试通过枚举x或y与k通分进行运算,并检查是否符合题意即可
枚举x还是y?由关系式可以得到,2y> k){ int cnt = 0; for(int y = k + 1; y |