bnuoj3016--Dramatic Multiplications

bnuoj3016--Dramatic Multiplications
数字游戏,逐位推出数字即可,需要注意的是结束条件,当迭代达到一定数量时就认为没有结果。

#include<stdio.h>
#include
<stdlib.h>
#include
<string.h>
#define LEN 3000
int main()
{
    
int i, j;
    
int T;
    
int n, k;
    scanf(
"%d"&T);
    
int n0[LEN];
    
int n1[LEN];
    
while(T--)
    
{
        scanf(
"%d%d"&n, &k);
        
int t = 0;
        
int t1;
        n0[
0= k;
        
int len = LEN - 10;
        
int gard = 0;
        
for(i = 0; i < len; i++)
        
{
            t1 
= n0[i] * n + t;
            n1[i] 
= t1 % 10;
            t 
= t1 / 10;
            n0[i 
+ 1= n1[i];
            
if(n1[i] == k && t == 0 && n1[i - 1!= 0)//结果数字不能有前导0,并且最高位不能有进位
            {
                gard 
= 1;
                
break;
            }

        }

        
if(n == 1)//n为1的时候只需要直接输出k,而上面for()的结果会输出两个k
            printf("%d\n", k);
        
else
        
{
            
if(gard == 1)
            
{
                
for(; i >= 0; i--)
                    printf(
"%d", n0[i]);
                putchar(
10);
            }

            
else
                printf(
"0\n");
        }

        
    }

    
//system("pause");
    return 0;
}




你可能感兴趣的:(bnuoj3016--Dramatic Multiplications)