6/23~6/24

打印 上一主题 下一主题

主题 518|帖子 518|积分 1554

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
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天津储鑫盛钢材现货供应商

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表