题目
思路
一开始记错题目,以为只是最后两位数,所以用了整型取模最后几位的方法,比较麻烦。注:测试点3的k是三位数。
这题由于不定长度,最好还是用字符串转换比较方便。我也做了一遍放在下面。
AC代码
- 用整型取模:
#include<bits/stdc++.h>
using namespace std;
int main(){
int m; cin>>m;
for(int i=0;i<m;i++){
int k; cin>>k;
int flag=0;
for(int n=0;n<=9;n++){
int d=k*k*n;
int t;
if(k>99) t=d%10+(d/10)%10*10+(d/100)%10*100;
else if(k>=10 && k<=99) t=d%10+(d/10)%10*10;
else t=d%10;
if(t==k){
cout<<n<<' '<<d<<endl;
flag=1;
break;
}
}
if(flag==0) cout<<"No"<<endl;
}
return 0;
}
- 用字符串转换:
#include<bits/stdc++.h>
using namespace std;
int main(){
int m; cin>>m;
for(int i=0;i<m;i++){
string k; cin>>k;
int len=k.length();
int flag=0;
for(int n=1;n<=9;n++){
int d=stoi(k)*stoi(k)*n;
string temp=to_string(d);
string check=temp.substr(temp.length()-len);
if(check==k) {
cout<<n<<' '<<d<<endl;
flag=1;
break;
}
}
if(flag==0) cout<<"No"<<endl;
}
return 0;
}