60分 解法
#include<stdio.h>
#include<string.h>
int main(){
int n, a, b;
scanf("%d%d%d", &n, &a, &b);
int A[n+1], B;
memset(A ,0, sizeof(A));
int i, site;
for(i=1; i<=a; i++){
scanf("%d", &site);
scanf("%d", &A[site]);
}
long long sum = 0;
for(i=1; i<=b; i++){
scanf("%d%d", &site, &B);
if(B==0) continue;
sum += A[site] * B;
}
printf("%lld", sum);
return 0;
}
100分解法
#include<stdio.h>
int main(){
int n, a, b, i, j, k=0;
scanf("%d%d%d", &n, &a, &b);
int A[a], B[b], Au[a], Bu[b];
for(i=0; i<a; i++) scanf("%d%d", &A[i], &Au[i]);
for(i=0; i<b; i++) scanf("%d%d", &B[i], &Bu[i]);
long long sum = 0;
for(i=0; i<a; i++){
for(j=k; j<b; j++){
if(A[i]==B[j]){
sum += Au[i] * Bu[j];
k = j + 1;//向下一个数推进
break;
}
if(A[i]<B[j]){
k = j;//存储当前数值
break;
}
}
}
printf("%lld", sum);
return 0;
}
本文通过两个不同的程序实例介绍了60分解法与100分解法的实现方式,重点在于处理输入数据并计算特定数值的总和。通过对两段代码的解析,可以了解如何使用C语言进行数组操作及条件判断。
928

被折叠的 条评论
为什么被折叠?



