又又又是一个敲击简单的程序
本帖最后由 陈尚涵 于 2022-10-28 21:17 编辑题目:爱学习的小明
难度:t1-t2(敲击简单)
题目描述:作为小学生的小明学会了加减竖式,但是有些东西光靠竖式可能没那么快能算出来,你能不能帮他写个程序算呢?
输入:a和n,1<=a<10,1<=n<=10
输出:a+aa+aaa+aaaa+....(n个a)
输入样例:1 5
输出样例:12345
解释:
1 5
指1+11+111+1111+111111=12345
答案:**** Hidden Message *****
a可以等于10 ?
等于10的时候是个什么情况?
人造人 发表于 2022-10-28 20:52
a可以等于10 ?
等于10的时候是个什么情况?
应该是1<=a<10,敲错了,望见谅{:10_257:} 人造人 发表于 2022-10-28 20:52
a可以等于10 ?
等于10的时候是个什么情况?
楼主好像修改了?a 小于 10 #include <iostream>
using std::cout, std::cin, std::endl;
int main(void) {
unsigned a, n, sum;
cin >> a >> n;
for (int num = sum = a; n - 1; --n) {
num = num * 10 + a;
sum += num;
}
cout << sum << endl;
return 0;
} 傻眼貓咪 发表于 2022-10-28 21:20
楼主好像修改了?a 小于 10
是的 发布的帖子审核不过去。。。 人造人 发表于 2022-10-28 21:37
是的
{:10_254:} #include <iostream>
#include <vector>
#include <algorithm>
int main(){
int a, n;
std::cin >> a >> n;
std::vector<unsigned int> buffer(n + 1, 0);
std::generate_n(buffer.begin(), n, [&n, a]()->unsigned int{ return (n--) * a; });
std::transform(buffer.cbegin(), buffer.cend(), buffer.begin(), [&n, &a](const auto& value)->unsigned int{
a = value + n;
return n = (a * 0x67) >> 10, a - ((n << 3) + (n << 1));
});
std::for_each(buffer.crbegin(), buffer.crend(), [&n](const auto& value){
if(n || value) { n = 1; std::cout << value; }
});
return 0;
} 来看看。。。
页:
[1]