/*==============================================
对于任意给定的两个正整数x和y,是否存在一个不超过
100的正整数m使得x^m与y^m的末尾三位数相等呢?
输入:x、y
如果m存在则输出m,否则输出“no”
================================================*/
#include<iostream> usingnamespace std; int main() { longlong X=1,Y=1,x,y,m,i; int a=0; cin>>x>>y; x=x%1000; y=y%1000; for(m=1;m<=100;m++) { X=1; Y=1; for(i=1;i<=m;i++) { X=(X*x)%1000; Y=(Y*y)%1000; } if(X%1000==Y%1000) { cout<<m; a=1; break; } } if(a==0) { cout<<"no"; } return0; }
其实可以用累乘的思想去做这个题,代码如下:
#include<iostream> using namespace std; int main() { long long X=1,Y=1,x,y,m,i; int a=0; cin>>x>>y; x=x%1000; y=y%1000; X=1; Y=1; for(m=1;m<=100;m++) { X=(X*x)%1000; Y=(Y*y)%1000; if(X%1000==Y%1000) { cout<<m; a=1; break; } } if(a==0) { cout<<"no"; } return 0; }