23.11.20

前言:回来了!!!

题目:

image

解题思路:

image

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include<cmath>
using namespace std;
int fun(int a1,int b1,int c1)
{
int x1,x2;
x1=(-b1+sqrt(b1*b1-4*a1*c1))/2*a1;
x2=(-b1-sqrt(b1*b1-4*a1*c1))/2*a1;
return x1>=x2?x1:x2;
}
int main(){
while(1){
long long sum = 0;
int x;//消费金额
int n;//奖池数量
cin>>x>>n;
int a[n+1];//n个奖池,所对应的积分,0号弃用
for(int i=1;i<n+1;i++){
cin>>a[i];
}
int i = 1;
while(i<=n*(n+1)/2){
int y;
cin>>y;
if(x==y){
sum = sum +a[fun(1,-1,-(2*i-2))];
// cout<<fun(1,-1,-(2*i-2))<<endl;
}
i++;
}
cout<<sum<<endl;
}
return 0;
}

运行结果:

image

注1:

另一种方法,前面一种分析过于复杂。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <iostream>
#include<cmath>
using namespace std;
int main(){
while(1){
long long sum = 0;
int x;//消费金额
int n;//奖池数量
cin>>x>>n;
int a[n+1];//n个奖池,所对应的积分,0号弃用
for(int i=1;i<n+1;i++){
cin>>a[i];
}
int y;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>y;
if(x==y){
sum=sum+a[i];
}
}
}
cout<<sum<<endl;
}

return 0;
}

注2:

​ 这几天天气很好捏!