每日一题——预言家(高精度)

学习目标:

在c语言中,我们的数字类型是有范围的,int,long。当我们数字规模特别大时,这些基本的数字类型已经无法存储了。那么我们就要想办法,怎么存储这些数字?

字符串?数组?这些都可以,我们就来看一下比较常用的数组是怎么存储的。


学习内容:

首先,我们用数组存放一个数字,原理就是将每一位数,放在数组的一个位上。

eg:123,存放在数组a[3]中,就是a[0]=1,a[1]=2,a[2]=3。输出时再按位输出即可。

然后是对这些数字要进行运算。+-*/。加法和减法好说,只要对他们进行按位相加,逢十进一即可。减法同理。乘法的话,就用其中一个数组的每一位分别与另一个数组的每一位相乘,并且每一次都要控制进位,而除法相对复杂,且应用较少,就不在此进行讲解,感兴趣的朋友可以自行了解。


看一下今天的题目:

 2^{15} = 32768215 =32768,他的各位和是3 + 2 + 7 + 6 + 8 = 263+2+7+6+8=26。

输入nn,求2^{n}2n的各位和。

输入

第一行输入组数T, 接下来T行,每行一个整数n。(1 <= T <= 1000,1 <= N <= 1000)

输出

对于每组数据,输出一个数,表示2的n次方的各位和。

样本

输入 输出
4
3
4
7
1000
8
7
11
1366

看到题目,2的1000次幂显然已经远远地超过了我们的数据范围,所以我们就要采用数组的方法进行求解。

其中主要包括的就是对数组进行相乘的系列操作,并对其以结构体的形式进行运算。

#include
#define ll long long
#define N 50001
using namespace std;
struct node {
	int n;//代表数组长度也是数字的位数
	int a[N];//存储每一位
	node() {//对结构体的数据进行初始化
		n=0;
		int i;
		for(i=0; i

 


每天坚持是一件很累的事,即使很慢,但也不要停止。由于过年,小编停更了几天,从今天开始,小编继续每日一题。欢迎大家及时督促,大家一起加油! 


大家记得点赞收藏,防止找不到哦。


欢迎大家订阅小编的每日一题专栏,会每天更新,都是用心准备的哦!

若有不同思路,欢迎评论区留言,看到必回,Goodnight!

你可能感兴趣的:(每日一题,leetcode,算法,c++,蓝桥杯,数组)