• UVA 725 UVA 10976 简单枚举


    UVA 725
    题意:0~9十个数组成两个5位数(或0开头的四位数),要求两数之商等于输入的数据n。abcde/fghij=n。
    思路:暴力枚举,枚举fghij的情况算出abcde判断是否符合题目条件。(注意前导零的判断)
    枚举的方法为 for(int i=1234;i<=100000/n;i++){} 
    #include<cstdio>
    #include<cstring>
    int num[10];
    bool check(int a,int b) {
        memset(num,0,sizeof num);
        if(b>98765) return false;
        if(a<10000) num[0]++;
        if(b<10000) num[0]++;
        while(a) {
            num[a%10]++;
            a/=10;
        }
        while(b) {
            num[b%10]++;
            b/=10;
        }
        for(int i=0;i<10;i++) {
            if(num[i]>1) return false;
        }
        return true;
    }
    int main() {
        int n,cnt=0;
        while(~scanf("%d",&n),n!=0) {
            if(cnt>0) printf("
    ");cnt++;
            int flag=0;
            for(int i=1234;i<=100000/n;i++) {
                if(check(i,i*n)) {
                    flag=1;
                    printf("%05d / %05d = %d
    ",i*n,i,n);
                }
            }
            if(flag==0) printf("There are no solutions for %d.
    ",n);
        }
        return 0;
    }
     
     
    UVA 10976
    题意:输入正整数k,找到所有的正整数x>=y使得1/k=1/x+1/y;
    思路:枚举x,y,考虑枚举范围,因为x>=y,1/x<=1/y,所以y<=2k。在k+1到2k范围内枚举y,计算出对应的x。
    #include<cstdio>
    int res[10010][2];
    int main() {
        int k;
        while(~scanf("%d",&k)) {
            int x,y;
            int cnt=0;
            for(y=k+1;y<=2*k;y++) {
                if((k*y)%(y-k)==0) {
                    x=(k*y)/(y-k);
                    res[cnt][0]=x;res[cnt++][1]=y;
                }
            }
            printf("%d
    ",cnt);
            for(int i=0;i<cnt;i++) {
                printf("1/%d = 1/%d + 1/%d
    ",k,res[i][0],res[i][1]);
            }
        }
        return 0;
    }
    枚举:根据题目条件,可以缩小枚举的范围,枚举某个数,算出另个数判断是否符合条件。
  • 相关阅读:
    周总结(第十一周)
    周总结(第十周)
    周总结(第九周)
    周总结(第八周)
    周总结(第七周)
    周总结(第六周)
    周总结(第5周)
    周总结(第四周)
    周记
    补周记
  • 原文地址:https://www.cnblogs.com/LinesYao/p/5743015.html
Copyright © 2020-2023  润新知