安庆市网站建设_网站建设公司_加载速度优化_seo优化
2026/1/16 13:16:18 网站建设 项目流程

【题目来源】
https://oj.czos.cn/p/1245

【题目描述】
求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 从键盘读入。
比如:读入 2,则 s=2+22=24。再比如:读入 5,s=5+55+555+5555+55555=61725。

【输入格式】
一个整数 a(a 在 1~9 的范围内)。

【输出格式】
整数 n,代表这个算式的结果。

【输入样例】
2

【输出样例】
24

【数据范围】
a 在 1~9 的范围内。

【算法分析】
● 在实践中,递归有“多个递归函数”写法,及“一个多参数递归函数”写法,以适应解决复杂问题的需求。
● 本题推荐使用“多个递归函数”写法,直观好理解。

【算法代码一:多个递归函数写法

#include <bits/stdc++.h>
using namespace std;int num(int cnt,int x) {if(cnt==1) return x;return x+10*num(cnt-1,x);
}long long sum(int cnt,int x) {if(cnt==1) return x;return sum(cnt-1,x)+num(cnt,x);
}int main() {int n;cin>>n;cout<<sum(n,n);return 0;
}/*
in:3
out:369
*/

【算法代码二:非递归写法

#include <bits/stdc++.h>
using namespace std;int main() {int n,t;cin>>n;t=n;long long sum=0;for(int i=1; i<=n; i++) {sum+=t;t=t*10+n;}cout<<sum;return 0;
}/*
in:3
out:369
*/

【算法代码三:一个多参数递归函数写法

#include <bits/stdc++.h>
using namespace std;long long f(int c,int n,int t) {if(c==0) return 0;return t+f(c-1,n,t*10+n);
}int main() {int n;cin>>n;cout<<f(n,n,n);return 0;
}/*
in:3
out:369
*/




【参考文献】
https://oj.czos.cn/p/1148
https://blog.csdn.net/weixin_42569562/article/details/81407543




 

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询