李巨帅


私信TA

用户名:168888

访问量:7573

签 名:

快乐每一天!

等  级
排  名 1544
经  验 2743
参赛次数 0
文章发表 18
年  龄 0
在职情况 学生
学  校 武汉软件
专  业

  自我简介:

TA的其他文章

[编程入门]矩阵对角线求和-题解(C++代码)
浏览:435
[编程入门]数字的处理与判断-题解(C++代码)
浏览:284
[编程入门]利润计算-题解(C++代码)
浏览:881

你可能喜欢

字符逆序 (C语言代码)

浏览:807

第一

浏览:884

C语言程序设计教程(第三版)课后习题10.2 (C语言代码)

浏览:685

C语言程序设计教程(第三版)课后习题5.7 (C语言代码)

浏览:722

C语言程序设计教程(第三版)课后习题6.3 (C语言代码)

浏览:522

解题思路: 本题提供俩种思路(经笔者测试均能通过):

1、直接法,用递归直接求出准确数值,数值有限制。

2、偷梁换柱法,利用大数相加法,输出string类型,数值可以超大!

附图:

1、直接法:

1013.png


2、偷梁换柱法:

1013(2).png

10134.png


注意事项: 掌握递归的运用及大数相加法即可快速解决本题!

参考代码:

/*#1、直接法*/
#includeusing namespace std;
int types(int n)
{
	if (n == 1)return 1;
	else return 10 * types(n - 1);
}
double two(int n)
{
	if (n == 1)return 2*types(1);
	else if (n >= 2)return 2 * types(n) + two(n - 1);
}
double sum(int n)
{
	if (n == 1)return two(1);
	else if (n >= 2)return two(n) + sum(n - 1);
}
int main(void)
{
	int n;
	cin >> n;
	cout << sum(n);
	return 0;
}
/*#2、偷梁换柱法*/
#include#includeusing namespace std;
//大数相加法
string add(string num1, string num2)
{
	if (num1.size() < num2.size()) {//把num1固定为位数较大的那个数,方便后面处理
		string temp = num1;
		num1 = num2;
		num2 = temp;
	}
	int length1 = num1.size(), length2 = num2.size(), flag = 0, a, b, sum;//flag是进位标记
	while (length1 > 0) {//从低位开始把对应的位相加
		a = num1[length1 - 1] - '0';//获取num1当前位的数字
		if (length2 > 0)//如果num2还没加完(注意,num2是位数较少的)
			b = num2[length2 - 1] - '0';//获取num2当前位的数字
		else
			b = 0;//如果num2加完了,num2对应位上就没有数来加了
				//这时我没有break,因为虽然num2没有数字来加了,但可能还有进位需要加
		sum = a + b + flag;//num1与num2对应位上的数字相加,再加上进位位
		if (sum >= 10) {//如果加起来大于于10,那就需要进位了
			num1[length1 - 1] = '0' + sum % 10;//计算加完之后,当前位应该是多少
			flag = 1;//把进位标记置1
		}
		else {
			num1[length1 - 1] = '0' + sum;//计算加完之后,当前位应该是多少
			flag = 0;//把进位标记置0
		}
		length1--;//向高位移动1位
		length2--;//向高位移动1位
	}
	//如果两个数对应位都加完了,进位位是1,说明位数要增加1了
	//比如99+1,加完之后,变成了三位数100,其实就是再在前面加一位1
	if (1 == flag)
		num1 = "1" + num1;
	return num1;
}
string num(int n)
{
	if (n == 1)return "2";
	else return "2" + num(n - 1);
}
string sum(int n)
{
	if (n == 1)return num(1);
	else if (n >= 2)return add(num(n), sum(n - 1));
}
int main(void)
{
	int a;
	cin >> a;
	cout << sum(a);
	return 0;
}

ps:如果对您有帮助,请给在下一个赞,感激不尽!!!

 

0.0分

5 人评分

分享
收藏

看不懂代码解释一下代码? 或者生成一段代码?试试AI编程助手吧

  评论区

  • «
  • »

精彩推荐

C语言训练-自由落体问题 (C语言代码)

浏览:1753

C语言程序设计教程(第三版)课后习题7.1 (C语言代码)

浏览:752

C语言程序设计教程(第三版)课后习题6.5 (C语言代码)

浏览:652

剪刀石头布 (C语言代码)

浏览:1761

WU-判定字符位置 (C++代码)

浏览:1423

简单的a+b (C语言代码)

浏览:542

【计算两点间的距离】 (C语言代码)

浏览:1502

水仙花 (C语言代码)

浏览:1122

Minesweeper (C语言描述,蓝桥杯)

浏览:1138

妹子杀手的故事 (C语言代码)

浏览:1085

PHP网站源码大运建站荷坳模板推广永湖seo网站推广松岗模板制作西乡网站优化按天收费龙岗网站优化推广惠州网络广告推广广州优化吉祥优秀网站设计坑梓百度竞价西乡模板网站建设龙岗网站推广工具塘坑百度网站优化大运网站设计荷坳网站搜索优化吉祥网站建设设计大鹏百度seo东莞模板制作光明企业网站设计南山百度网站优化石岩网页制作坪地模板网站建设西乡SEO按效果付费福田网站优化按天收费南山SEO按效果付费丹竹头关键词排名深圳网络推广福田网站优化软件大浪百度关键词包年推广坪山网站设计歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化