题意简述
有 道题,答对一道获得
分,答错不得分。但是如果现在分数为 10 的倍数将会显示 0 分,问最高可以获得多少分?
只不过要吐槽一下样例数据:输入 #3 明明没有输出,但数据里却要求输出 。
解题思路
分类讨论思想。
-
所有得分都是 的倍数,直接输出 。
-
所有得分之和不是 的倍数,输出得分之和。
-
和是 的倍数,但有部分得分不是 的倍数,那么减去这些不是 的倍数里面的最小值即为答案。
代码实现
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int n,tmp,sum,minn=inf; bool pd;
void doit() { pd=true; minn=min(minn,tmp);}
int main() {
scanf("%d",&n);
for(int i=1;i<=n;i++) {
scanf("%d",&tmp); sum+=tmp;
if(tmp%10!=0) doit();
}
if(!pd) printf("0");
else if(sum%10!=0) printf("%d",sum);
else printf("%d",sum-minn);
return 0;
}
//code by TheCedar