首页 > 代码库 > hdu1061 Rightmost Digit

hdu1061 Rightmost Digit

    说实话,这道题给人的感觉不难,虽然第一次提交的时候超时了一次,然后看了一下数据量,稍作修改,提交,A了,但现在还是不知道为什么A了,上网搜了各种题解,感觉和他们的还是不一样。

 

解题思路:因为它要求的就是最后结果的个位数,又因为它是n个n相乘的结果,我只要去n的个位数就够了,就是n对10取余,然后(n%10)相乘n次,每次又要对10取余,但发现数据量有点大,因为要循环n次相乘,再对循环次数做处理,让n对10000取余,就够了,这里我自己也有点不明白。

 

贴出代码:

 

#include <stdio.h>int main(){    int n, T;    int num;    scanf("%d", &T);    while(T--)    {        scanf("%d", &n);        num = 1;        for(int i = 0; i<n%10000; i++)    //对相乘的次数做处理        {            num = (num*(n%10))%10;     //求n的余数与它相乘,然后再取余        }        printf("%d\n", num);    }}