1、求字符串中数字和
输入:
AB3ASD56n89-9
输出
166
解题思路;遍历字符串,先while统计‘-’的个数,在while统计数字,得到所得数字
代码:
#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
string str;
cin >> str;
string num;
int sum = 0;
int fuhao = 0;
for (int i = 0; i < str.size(); i++){
while (str[i] == '-'){
fuhao++;
i++;
}
while (str[i] >= '0' && str[i] <= '9'){
num += str[i];
i++;
}
if (num != ""){
sum += pow(-1, fuhao)*stoi(num);
}
num = "";
fuhao = 0;
}
cout << sum << endl;
return 0;
}
2、卷积公式求解
输入描述:最高阶为x^4,从高阶到低阶依次输入相应的系数,系数为复数形式,包括正数、负数
按照以上规则 输入两个式子
输出描述:从高阶到低阶系数输出
输入:
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
输出:
0
2
0
4
0
6
0
8
0
10
0
8
0
6
0
4
0
2
输入输出解释:a=(i+i)+(1+i)x+(1+i)x^2+(1+i)x^3+(1+i)x^4
b=(i+i)+(1+i)x+(1+i)x^2+(1+i)x^3+(1+i)x^4
输出:c=2i+4i+8i+10i+8i+6i+4i+2i
c(0)=a(0)*b(0);
c(1)=a(1)*b(0)+a(0)*b(1)
c2=a0*b2+a1*b1+a2*b0;
.........
cn=a0*b(n)+a(1)*b(n-1)+a(2)*b(n-2)...........a(n)*b(0);
代码:
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
vector<int> solution(vector<int>num1, vector<int>num2)//对两个复数进行乘运算
{
int a = num1[0] * num2[0] - num1[1] * num2[1];
int b = num1[0] * num2[1] + num1[1] * num2[0];
vector<int>res = { a, b };
return res;
}
vector<int> add(vector<int>num1, vector<int>num2)//对两个复数进行加运算
{
int a = num1[0] +num2[0];
int b = num1[1] +num2[1];
vector<int>res = { a, b };
return res;
}
int main()
{
vector<vector<int>>a;
vector<vector<int>>b;
int num1, num2;
for (int i = 0; i<5; i++){
cin >> num1 >> num2;
a.push_back({ num1, num2 });
}
for (int i = 0; i<5; i++){
cin >> num1 >> num2;
b.push_back({ num1, num2 });
}
reverse(a.begin(), a.end());//进行翻转保证系数从低阶到高阶
reverse(b.begin(), b.end());
vector<vector<int>>c;
for (int i = 0; i <9 ; i++){
vector<int> res = {0,0};
for (int index1 = 0; index1 <= i; index1++){
if ((i - index1 >= 0) &&( i - index1 <= 4)&&index1>=0 &&index1<=4){
vector<int>tem = solution(a[index1], b[i - index1]);
res = add(res, tem);
}
}
c.push_back(res);
}
//int i = c.size();
for (auto i : c){
for (auto ii : i){
cout << ii << endl;
}
}
//system("pause");
return 0;
}
3、牛繁殖
一对牛一个小时繁殖1对牛,新生出来牛,过3h之后,才可以进行繁殖
eg: 最开始有1头牛,繁殖6h有多少头
1h | 2h | 3h | 4h | 5h | 6h | |
A | B | C | D | E | F | |
A1 | A2 | |||||
B1 | ||||||
1 | 2 | 3 | 4 | 5 | 7 | 10 |
规律:num(i)=num(i-1)+num(i-4)//num(i)第i个小时有多少头牛\
#include<iostream>
using namespace std;
int main()
{
int N,M,k;
long long num[50];
cin>>N;
int i;
while(N--)
{
i=0;
cin>>M>>k;
num[0]=2;
for(i=1;i<k;i++)
{
if(i>=4)
num[i]=num[i-1]+num[i-4];
else
num[i]=num[i-1]+1;
}
cout<<M*num[k-1]<<endl;
}
return 0;
}