经过自己的数据测试找到了一个惊天大BUG
比如说我定义 int x;
然后定义了 long long t=x*x*x;
这样运算出来的t=1236966199
但是实际的数值是 52776573751
这是我写的一个错误点
结论 int类型的数值经过运算不能赋值给 long long (在1000以内是可以的)
题目:
有些数字的立方的末尾正好是该数字本身。
比如:1,4,5,6,9,24,25,....请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。
请提交该整数,不要填写任何多余的内容
思路:在主循环中对i进行循环,然后判断i 的位数,比如说 i 是 24两位数 对t=i*i*i;对100取模
#include<iostream>
using namespace std;
int fun(long long x)
{
long long t=x*x*x;
int x1=x;
int w=0;//x的位数
while(x1)
{
x1/=10;
w++;
}
int k=1;
for(int i=1;i<=w;i++)
{
k=k*10;
}
t=t%k;
if(t==x)
return 1;
return 0;
}
int main()
{
int cnt=0;
for(int i=1;i<10000;i++)
{
if(fun(i))
{
cnt++;
cout<<i<<" "<<i*i*i<<endl;
}
}
cout<<cnt;
return 0;
}
瞎鸡儿测试的代码
#include<iostream>
using namespace std;
int fun(int x)
{
long long int t=x*x*x;
cout<<"t "<<t<<endl;
int x1=x;
int w=0;//x的位数
while(x1)
{
x1/=10;
w++;
}
int k=1;
for(int i=1;i<=w;i++)
{
k=k*10;
}
cout<<"k"<<k<<endl;
cout<<"t "<<t<<endl;
t=t%k;
cout<<"t"<<t<<endl;
if(t==x)
return 1;
return 0;
}
int main()
{
long long x;
long long t;
while(cin>>x)
{
t=x*x*x;
cout<<t<<endl;
cout<<t%10000<<endl;
cout<<fun(x)<<endl;
}
return 0;
}