zoukankan      html  css  js  c++  java
  • atcoder 2579

    You are taking a computer-based examination. The examination consists of N questions, and the score allocated to the i-th question is si. Your answer to each question will be judged as either "correct" or "incorrect", and your grade will be the sum of the points allocated to questions that are answered correctly. When you finish answering the questions, your answers will be immediately judged and your grade will be displayed... if everything goes well.

    However, the examination system is actually flawed, and if your grade is a multiple of 10, the system displays 0 as your grade. Otherwise, your grade is displayed correctly. In this situation, what is the maximum value that can be displayed as your grade?


    Constraints
    • All input values are integers.
    • 1N100
    • 1si100
    Input

    Input is given from Standard Input in the following format:

    N
    s1
    s2
    :
    sN
    
    Output

    Print the maximum value that can be displayed as your grade.

    Sample Input 1
    3
    5
    10
    15
    
    Sample Output 1
    25
    

    Your grade will be 25 if the 10-point and 15-point questions are answered correctly and the 5-point question is not, and this grade will be displayed correctly. Your grade will become 30 if the 5-point question is also answered correctly, but this grade will be incorrectly displayed as 0.

    Sample Input 2
    3
    10
    10
    15
    
    Sample Output 2
    35
    

    Your grade will be 35 if all the questions are answered correctly, and this grade will be displayed correctly.

    Sample Input 3
    3
    10
    20
    30
    
    Sample Output 3
    0
    

    Regardless of whether each question is answered correctly or not, your grade will be a multiple of 10 and displayed as 0.

    问可以最大得到的分数且不能被10整除;

    我之前考虑的是dp,发现不太对;

    其实:如果所有的数都是10的倍数的话,那么答案就为0;

    否则我们减去一个最小的且不为10的倍数的数即可;

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstdlib>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<map>
    #include<set>
    #include<vector>
    #include<queue>
    #include<bitset>
    #include<ctime>
    #include<deque>
    #include<stack>
    #include<functional>
    #include<sstream>
    //#include<cctype>
    //#pragma GCC optimize(2)
    using namespace std;
    #define maxn 200005
    #define inf 0x7fffffff
    //#define INF 1e18
    #define rdint(x) scanf("%d",&x)
    #define rdllt(x) scanf("%lld",&x)
    #define rdult(x) scanf("%lu",&x)
    #define rdlf(x) scanf("%lf",&x)
    #define rdstr(x) scanf("%s",x)
    typedef long long  LL;
    typedef unsigned long long ull;
    typedef unsigned int U;
    #define ms(x) memset((x),0,sizeof(x))
    const long long int mod = 1e9 + 7;
    #define Mod 1000000000
    #define sq(x) (x)*(x)
    #define eps 1e-4
    typedef pair<int, int> pii;
    #define pi acos(-1.0)
    //const int N = 1005;
    #define REP(i,n) for(int i=0;i<(n);i++)
    typedef pair<int, int> pii;
    inline LL rd() {
    	LL x = 0;
    	char c = getchar();
    	bool f = false;
    	while (!isdigit(c)) {
    		if (c == '-') f = true;
    		c = getchar();
    	}
    	while (isdigit(c)) {
    		x = (x << 1) + (x << 3) + (c ^ 48);
    		c = getchar();
    	}
    	return f ? -x : x;
    }
    
    /*ll gcd(ll a, ll b) {
    	return b == 0 ? a : gcd(b, a%b);
    }
    int sqr(int x) { return x * x; }
    */
    
    /*ll ans;
    ll exgcd(ll a, ll b, ll &x, ll &y) {
    	if (!b) {
    		x = 1; y = 0; return a;
    	}
    	ans = exgcd(b, a%b, x, y);
    	ll t = x; x = y; y = t - a / b * y;
    	return ans;
    }
    */
    
    
    int n;
    
    int a[maxn];
    
    int main() {
    //	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
        cin>>n;int sum=0;
        bool fg=1;
        for(int i=1;i<=n;i++)rdint(a[i]),sum+=a[i];
        for(int i=1;i<=n;i++){
        	if(a[i]%10!=0)fg=0;
    	}
    	if(fg==1){
    		cout<<0<<endl;return 0;
    	}
        if(sum%10!=0){
        	cout<<sum<<endl;
    	}
        else{
        	sort(a+1,a+1+n);
        	for(int i=1;i<=n;i++){
        		if((sum-a[i])%10!=0){
        			cout<<sum-a[i]<<endl;
        			return 0;
    			}
    		}
    	}
    }
    
    EPFL - Fighting
  • 相关阅读:
    js修改剪切板内容的方法
    使用jq获取文字的宽度
    如何改变placeholder的样式
    如何使用phpmyadmin建立外键约束
    php上传文件中文文件名乱码的解决方法
    如何禁止审查元素扒代码(F12)
    如何使用css影藏滚动条
    webstorm配置babel自动转译es6的方法
    css纯字母或者字母换行显示
    使用Jquery做分页效果
  • 原文地址:https://www.cnblogs.com/zxyqzy/p/10319167.html
Copyright © 2011-2022 走看看