NYOJ 52 无聊的小明
【摘要】 题目链接~~>
做题感悟:这题其实很简单,只是尝试了很久。
解题思路:这题就是取模的思想,一定要注意输出 - 1 的情况,循环必须与第一个次取模得的结果一样,否则如果出现循环不是与第一个产生的循环则输出 - 1 。
代码:
#include<stdio.h>#include<string.h>#include<math.h>b...
做题感悟:这题其实很简单,只是尝试了很久。
解题思路:这题就是取模的思想,一定要注意输出 - 1 的情况,循环必须与第一个次取模得的结果一样,否则如果出现循环不是与第一个产生的循环则输出 - 1 。
代码:
-
#include<stdio.h>
-
#include<string.h>
-
#include<math.h>
-
bool vis[100005] ;
-
int main()
-
{
-
long long int T,n,k,sum ;
-
scanf("%lld",&T) ;
-
while(T--)
-
{
-
scanf("%lld%lld",&n,&k) ;
-
memset(vis,false,sizeof(vis)) ;
-
sum=pow(10,k) ;
-
long long mx=1,num=1,mod,nx=-1,flag ;
-
flag=n%sum ;
-
while(1)
-
{
-
mx*=n ;
-
mod=mx%sum ;
-
mx=mx%sum ;
-
if(mod==flag&&vis[mod]) // 如果是与第一个相同则记录
-
nx=num-1 ;
-
if(vis[mod]) // 出现循环则结束
-
break ;
-
vis[mod]=num ;
-
num++ ;
-
}
-
printf("%lld\n",nx) ;
-
}
-
return 0 ;
-
}
文章来源: blog.csdn.net,作者:Linux猿,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/nyist_zxp/article/details/18008511
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)