/* 如果是循环的,那么往后乘,必然会有和第一个相等, 如果不是循环的,那么往后乘,必然会有一个和第一个后面的相等, 而不是和第一个相等,所以先记录第一个,然后每乘一个都要看看有没有 和前面相等的出现,并且num++,直到出现为止。 如果出现了而不是和第一个相等,就输出-1 如果和第一个相等就输出num。 有一个问题: 怎么才能知道一个数出现过两次? (这里用到了map容器,可以很方便的知道一个数是否出现过, 看看下面代码就知道容器的用法啦!) */ #include<iostream> #include<map> using namespace std; map<int,bool>m;//定义一个空容器 int main() { int T,n,k,term,f,num,i; cin>>T; while(T--) { cin>>n>>k; for(i=0,term=1;i<k;i++)term*=10; k=term;//k为10的k次方 n%=k;//为了防止溢出,取余数 f=term=n;//f标记n的一次放 num=0; while(m.find(term)==m.end())//如果term没有出现过 { num++;//标记循环节数 m[term]=true;//标记term为出现过 term=(int)(((long long)term*n)%k);//算出下一个term(注意防止溢出) } if(term!=f)cout<<"-1\n";//如果出现循环并且不是第一个,就输出-1 else cout<<num<<endl;//否则输出num m.clear();//注意别忘记清空容器哦! } return(0); }
相关推荐
南阳理工oj离线题库
南阳理工学院OJ第1版解题报告V1.0.pdf
南阳理工学院OJ_个人AC代码包(Java提交) 是Java初学者登堂入室的很好例子。
南阳理工学院stl练习场全部ac代码!
南阳理工ACM离线题库
哈理工OJ1084答案哈理工OJ1084答案哈理工OJ1084答案哈理工OJ1084答案哈理工OJ1084答案
西安理工大学学生在线实验系统编程题答案(超级详细)
山东理工大学2016级OJ进程,始于悦行,终于诚信。
基于Laravel 5.0的OJ题解网站 , 目前涵盖安科OJ,南阳OJ,杭电OJ ,北大OJ,浙大OJ.zip
趣味题:柱状图排序 西安理工大学学生在线实验系统 oj
湖南理工学院OJ的0-100题解.rar
在线OJ网址大全在线OJ网址大全在线OJ网址大全在线OJ网址大全
山东理工大学2016级OJ题目1833
山东理工大学2016级OJ题目1834
搭建OJ平台的工具,方便大家搭建自己的OJ,建议大家使用ubuntu14.04版本,比较稳定
OJ习题.zip
厦门理工学院软件工程重点课件,考试前抱佛脚可用。
实在写不出来,这个可以提供一些思路,慎重《copy》
这是洛谷OJ题库导出文件,希望大家下载看看
湖南大学ACM-OJ的部分题目代码,对学习数据结构和算法很有帮助