天津储鑫盛钢材现货供应商 发表于 2022-8-9 14:45:12

6/23~6/24

1.除法uva725

题面:输入正整数n,按从小到大顺序输出所有形如abcde/fghij=n的表达式,其中aj恰好为09的一个排列,可以有前导零
注意点:


[*]前导零只可能出现在除数中,即被除数为和除数最多为五位数
[*]通过对除数进行dfs枚举,并记录该枚举方案是否有前导零,计算得到被除数,再检验每一个数字是否存在即可
#includeusing namespace std;int n;bool vis,flag;int v;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 += 1;        }        while(b){                m = b % 10;                b /= 10;                v += 1;        }        if(v > 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
页: [1]
查看完整版本: 6/23~6/24