例题7-1 UVA 725 Division除法

来源:互联网 发布:如何用c语言编写贪吃蛇 编辑:程序博客网 时间:2024/06/14 16:42

思路不太好,借鉴一下吧

整体思路:分析可知第一个数肯定是个五位数,第二位要么是五位数,要么是四位数,所以呢,第一个循环直接扫第一个五位数,从10000扫到99999只有当五个数字各不相同,并且通过除法算出第二个数,判断两个数各个数字都不相同即可输出:

#include<cstdio>#include<string.h>using namespace std;const int maxn = 10;int judge(int num){    int cont = 0,flag[maxn] = {0};    while(num != 0){        int a = num % 10;        flag[a] = 1;        num /= 10;    }    for (int i = 0; i < maxn; ++i)if (flag[i])cont++;    if (cont == 5)return 1;    if (cont == 4 && !flag[0])return 2;    return 0;}int judge2(int num1,int num2){    int flag[maxn] = {0},cont = 0;    while(num1 != 0){        int a = num1 % 10;        flag[a]++;        num1 /= 10;    }    while(num2 != 0){        int a = num2 % 10;        flag[a]++;        num2 /= 10;    }    for (int i = 0; i < maxn; ++i){        if (flag[i] != 1)cont++;    }    if (cont == 1 && !flag[0])return 2;    if (cont)return 0;    if (!cont)return 1;    return 0;}int main(){    int N,cont2 = 0,cont = 0;    while (scanf("%d",&N) == 1 && N){            cont2++;            cont = 0;        if (cont2 > 1)printf("\n");        for (int i = 10000; i < 99999; ++i){            if (judge(i) == 1){//1 is 5   2 is 4,0 is no!                int num2 = i / N;                if (judge2(i,num2) && N * num2 == i){                        cont++;                    if (judge2(i,num2) == 1)printf("%d / %d = %d\n",i,num2,N);                    else printf("%d / 0%d = %d\n",i,num2,N);                }            }        }        if (!cont)printf("There are no solutions for %d.\n",N);    }    return 0;}


0 0
原创粉丝点击