python立方尾不变代码_蓝桥杯—立方尾不变,有些数字的立方的末尾正好是该数字本身...

今天刷了一道蓝桥杯的习题,题目的要求如下:

立方尾不变

有些数字的立方的末尾正好是该数字本身。

比如:1,4,5,6,9,24,25,....

请你计算一下,在10000以内的数字中(指该数字,并非它立方后的数值),符合这个特征的正整数一共有多少个。

请提交该整数,不要填写任何多余的内容。

答题思路:

1.  首先这道题没有对时间和内存做要求,所以可以采用穷举法,当然了肯定是越简单越好。

2.  由于10000内正整数的立方是一个很大的数,所以要用long long 类型来保存。

3.  比如说25的立方为15625,这个数就满足题的要求。25是一个两位数,我们只需要取出15625的后两位,来与25比较,判断是否相等。相等满足题的要求,则记录下来。

好吧,思路就说到这里,下面给出源代码。

代码如下:

ConsoleApplication1.cpp : 定义控制台应用程序的入口点。

//

#include "stdafx.h"

#include

#include

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

long long lng = 1;

long int count = 0;

int bit;

int j = 0;

long long end=0;

long long mod = 0;

long long temp = 0;

for (int i =1; i<10000; i++)

{

lng = 1;

bit = 1;

end = 0;

mod = 0;

j = 0;

temp = i;

lng = (long long )pow(temp, 3);//pow( )函数的返回值类型为double,所以强制转换为long long 类型

while (temp >0)//判断i是几位数,取余的时候则循环几次。

{

++j;//求i是几位数,取余的时候共参考。

temp = temp / 10;

}

while (j-- > 0)

{

bit = bit * 10;

}

end = lng%bit;//根据i的位数,来判断取余的时候取几位。

if (end == i)

{

count++;

cout << i << endl;//用于调试,让用户看的更直接。

}

}

cout << count << endl;

system("pause");

return 0;

}

运行截图:

额加福利:

可能会有朋友些代码的时候遇见这种情况。

为什么lng=3751*3751*3751的结果不对呢?

3751*3751*3751,这个操作实际上系统在处理的时候默认是int的操作,int是32位的,其取值范围-2147483648~2147483647,也就是说根本放不下结果,所以给出的答案是错误的。

你改成下面这种就对了:

#include

using namespace std;

int main()

{

long long a = 3751;

cout<

}

而 pow的话是系统函数,会用double来进行运算,double有64位,完全可以放下结果,所以运算的结果是正确的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值