查看: 2451|回复: 26

[C/C++] 1170:计算2的N次方

[复制链接]

1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

发表于 2021-9-13 21:18:57 | 显示全部楼层 |阅读模式
【题目描述】
任意给定一个正整数N(N<=100),计算2的n次方的值。

【输入】
输入一个正整数N。

【输出】
输出2的N次方的值。

【输入样例】
5
【输出样例】
32

【代码】
[C++] 纯文本查看 复制代码
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
        int n, a[10001], s, t = 1;
        cin >> n;
        a[1] = 1;
        for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= t; j++) {
                        a[j] *= 2;
                }
                for (int j = 1; j <= t; j++) {
                        s = 0;
                        if (a[j] > 9) {
                                a[j + 1] += a[j] / 10;
                                a[j] = a[j] % 10;
                                s = max(s, j + 1);
                        }
                }
                t = max(t, s);
        }
        for (int j = t; j >= 1; j--) {
                cout << a[j];
        }
        return 0;
}


Just do it.

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-14 08:20:15 | 显示全部楼层
头一次感觉c++折磨复杂,2的n次方用python一横代码就可以解决。。。@skystars

[Python] 纯文本查看 复制代码
pow(2, n)
Manners maketh man

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-14 08:23:55 | 显示全部楼层
还是我的py简单,不用考虑各种溢出,n填写多少都可以,你们c++都难成这样了?!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Manners maketh man

1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

 楼主| 发表于 2022-4-14 12:28:40 | 显示全部楼层
xiaomeng 发表于 2022-4-14 08:23
还是我的py简单,不用考虑各种溢出,n填写多少都可以,你们c++都难成这样了?!
...

我写个大数类的话,也能像你这样
Just do it.

1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

 楼主| 发表于 2022-4-14 12:29:37 | 显示全部楼层
这个方法其实不是最快的,可以用快速幂实现
Just do it.

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-14 13:25:56 | 显示全部楼层
skystars 发表于 2022-4-14 12:29
这个方法其实不是最快的,可以用快速幂实现

听不懂,不学c++,反正你在敲代码上已经输给我了

不过c++效率高一点,要是比运行的话还是你厉害
Manners maketh man

1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

 楼主| 发表于 2022-4-15 05:15:58 | 显示全部楼层
xiaomeng 发表于 2022-4-14 13:25
听不懂,不学c++,反正你在敲代码上已经输给我了

不过c++效率高一点,要是比运行的话还是你厉害 ...

你不看代码时间复杂度的吗
Just do it.

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-15 08:03:24 | 显示全部楼层
skystars 发表于 2022-4-15 05:15
你不看代码时间复杂度的吗

T(n) = O(N+N ^2 ) = O(N ^2 )

知道但是我不咋研究,对我来说没啥太大用处@skystars
Manners maketh man

0

技术

7

魅力

0

原创

版主

Rank: 7Rank: 7Rank: 7

积分
5114
人气
137
分享
5
发表于 2022-4-15 08:08:57 | 显示全部楼层
skystars 发表于 2022-4-15 05:15
你不看代码时间复杂度的吗

几次循环就是n的几次方的时间复杂度,很少有人用python研究时间复杂度的问题,但是也不是不能研究,很简单的
Manners maketh man

1

技术

25

魅力

7

原创

管理员

Rank: 9Rank: 9Rank: 9

积分
11343
人气
297
分享
42

论坛元老优秀版主活跃会员最佳新人灌水之王

 楼主| 发表于 2022-4-15 12:25:05 | 显示全部楼层
xiaomeng 发表于 2022-4-15 08:03
T(n) = O(N+N ^2 ) = O(N ^2 )

知道但是我不咋研究,对我来说没啥太大用处@skystars  ...

我的意思是计算n次方的时间复杂度,我发的代码是O(n)的算法

Python应该是O(logn)的算法,所以理论上Python的会快一些
Just do it.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表