東方博宜OJ1729: 【基礎】同構數題解


題目傳送門
同構數是這樣一種數:它出現在它的平方數的右端。
我們可以寫一個計算位數的函數

while(a!=0){
	wsop++;//位數++
	a/=10;//不加會RE
}

再寫一個一個判斷同構數的函數,使用ans求出后面wsp(a)位的數。

int tgs(long long a){
	int ans=1;//初始化 
	for(int i=1;i<=wsp(a);i++){ 
		ans*=10;//求10^wsp(a) 
	}
	if((a*a)%ans==a){//判斷是否是同構數 
		return 1;
	}
	return 0;
}

代碼:

#include<iostream>
using namespace std;
int wsp(long long a){
	int wsop=0;
	while(a!=0){
		wsop++;//位數++ 
		a/=10;//不加會RE 
	}
	return wsop;
}
int tgs(long long a){
	int ans=1;//初始化 
	for(int i=1;i<=wsp(a);i++){ 
		ans*=10;//求10^wsp(a) 
	}
	if((a*a)%ans==a){//判斷是否是同構數 
		return 1;
	}
	return 0;
}
int main(){
	int n,sum=0;//初始化 
	cin>>n;
	for(int i=1;i<=n;i++){
		sum+=tgs(i);//求個數 
	}
	cout<<sum;//輸出 
	return 0;
} 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM