POJ 2897 Dramatic Multiplications(简单模拟)

来源:互联网 发布:小米手机抢购软件 编辑:程序博客网 时间:2024/06/07 12:34

Description
给出两个小于10的整数n和k,问是否存在一类数满足最低位是k,且该数乘n后k变成最高位且其余为均右移一位,例如,n=4,k=4时,4*102564=410256,410256就是一个满足条件的数。如果存在这类数输出最小的一个,不存在则输出0
Input
第一行为一整数T表示用例组数,每组用例占一行包括两个整数n和k(1<=n,k<=9)
Output
对于每组用例,如果对于给出的n和k有满足条件的数则输出最小的一个,不存在就输出0
Sample Input
2
4 5
2 1
Sample Output
128205
0
Solution
简单模拟,就是开一个数组记录这个数,最低位设成k,不断对最高位乘n(模拟对整个数乘n的过程),直到最高位变成k为止,此时判断次高位是否为0,为0则不满足条件,不为0则说明满足条件,输出即可
Code

#include<stdio.h>int main(){    int t,n,k,num[111],cnt,res;    scanf("%d",&t);    while(t--)    {        scanf("%d%d",&n,&k);        num[0]=k;        res=cnt=0;        while(1)        {            num[++cnt]=(num[cnt-1]*n+res)%10;            res=(num[cnt-1]*n+res)/10;            if(num[cnt]==k&&res==0)                break;        }        if(num[cnt-1]==0)printf("0\n");        else        {            for(int i=cnt-1;i>=0;i--)                printf("%d",num[i]);            printf("\n");        }    }    return 0;}
0 0
原创粉丝点击