90分,只有#5过不了,求解答哪里错了啊
查看原帖
90分,只有#5过不了,求解答哪里错了啊
1340302
jijianxiangsu楼主2024/4/21 22:13
#include <bits/stdc++.h>
using namespace std;

int s(long long n){
	int sum=0;
	while(n){
		sum+=n%10;
		n=n/10;
	}
	return sum;
} 

long long qp(long long i,long long j)
{
	long long res=1;
	for(int k=1;k<=j;k++)	res=i*res;
	return res;
}

long long skip(long long n){
	long long k=0;
	long long a[12],id=0,b[12];
	memset(a,0,sizeof a);
	memset(b,0,sizeof b);
	long long j=n;
	while(j)
	{
		a[++id]=j%10;
		j/=10;
	}
	int f=0;
	for(int i=1;i<=id;i++)
	{
		if(a[i]+f>3)	f=1,b[i]=0;
		else 			b[i]=a[i]+f,f=0;
	}
	if(f)	b[++id]=1;
	for(int i=1;i<=id;i++)
		k+=b[i]*qp(10,i-1);

	return k;
}

int main(){
	long long l,r;
	cin>>l>>r;
	int sum=0;
	for(long long i=l;i<=r;++i){
		i=skip(i);
		if((s(i*i)==s(i)*s(i))&&i<=r)	++sum;
	} 
	cout<<sum;
	return 0;
}
2024/4/21 22:13
加载中...