A1:薄弱的知识点:
1函数的递归调用 每次做一些机械循环的题目知道可以用函数的递归调用就是不会用,不知道怎么写,知道意思打不出来。
2字符串数组 感觉写的乱七八糟的
3指针与数组,指针与字符串 指针指向了地址,带上*符号 被引用的带上& 这些符号乱乱的 还有带上符号的代表各种意思 目前还有待记忆理解
A2
7-2 数列求和-加强版 (10 分)
给定某数字A(1≤A≤
输入格式:
输入数字A与非负整数N。
输出格式:
输出其N项数列之和S的值。
输入样例:
1 3
输出样例:
123
一题目大意
求算式S=A+AA+AAA+⋯+AA⋯A(N个A)
二解题思路
用笔算算式求解
A
A A
A A A
.........
+A..........A
-----------------------
s
三代码思路
把各个位置的数字打出来
考虑进位问题
四核心技术总结
要做出一道数学题目就要想算法,找到算法翻译即可
五如何解决
第一次我想的算法不是这个,如下:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int A,N,s=0;
cin>>A>>N;
for(int i=1;i<=N;i++)
s=s+((pow(10,i)-1)/9)*A;
cout<<s;
return 0;
}
发现部分正确,请教师姐后说是N的取值范围很大,超出了范围,这个算法不行
后面就想其他算法,经过师姐的指导找到了笔算的这种算法。
#include<iostream>
using namespace std;
int main(void)
{
int A, N,flag,temp;
long j=0;
int *num;
cin >> A >> N;
if (N == 0)
{
cout << N;
}
else
{
num = new int[N];
flag = 0;
for (int i = N; i >= 1; i--)
{
temp = A*i + flag;
flag = temp / 10;
num[j] = temp % 10;
j++;
}
if (flag > 0)
{
num[j] = flag;
}
else
{
j--;
}
for (int i = j; i >= 0; i--)
{
cout << num[i];
}
delete[] num;
}
return 0;
}