1 条题解
-
0
自动搬运
来自洛谷,原作者为

wpy233
你弱归你弱,py比你弱。 stO 所有关注我的巨佬 Orz搬运于
2025-08-24 22:16:32,当前版本为作者最后更新于2020-01-29 11:07:53,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
怎么感觉楼上楼下的们这题都做烦了呀……
正文开始
众所周知,这道题目直接枚举个数然后再累加计算肯定是不行的(会飞
虽然我没试过haha),貌似会得到的好成绩。但是,如果让我们来枚举剩下的两个数就非常容易了(效率就能高一大截,并拿到的好成绩)……
萌新:诶,打住打住,那怎么判断剩下数的和是不是的倍数呢?!!
作者:你先在输入的时候把和累加一下,然后再减去枚举的两个数不就行了嘛~
其实(呵呵),这题剩下的两个数根本就不用枚举!!!
吓死我了我们把所有和都累加起来,得到一个值(比如说是),那我如果要让这个数是的倍数,我只要把这个末位的给减掉不就行了
被吓死*2萌新
是的我又来了:诶,那把这个给减掉不也行耶???是的,这回楼上回的没错。因为给定的数是~范围内的,所以自然也可以凑出两个数,让它们的和为。
这么一来,我们不就做完了吗???
被吓死*3那我们只要:
①开一个数组,累计~出现的次数(为毛不是~?你想想呀在这个题目中跟有什么区别?
10就是来打酱油的)②计算所有数之和并
③判断能否用两个数字组成所有数之和或所有数之和即可。
例如:,我们只要判断有没有两个数字可以组成或就行了。
最优一发,貌似挺优了吧……
另外吐槽这题有黄题难度吗qaq正解应该不算难想吧#include<bits/stdc++.h> using namespace std; int n; int a[15];//定义累计数字数组 long long ans=0;//其实这里用int就够了,不过保险起见&内存充足时用long long还是万无一失吧 int main() { cin>>n; int x; for(int i=1;i<=n;i++) { scanf("%d",&x);//输入每个数字 if(x==10) a[0]++;//10跟0没区别呀~ else a[x]++; ans+=x%10;//累加 } int t=ans%10; //以下是略长的判断过程 if(t==0) if(a[0]>=2||a[1]&&a[9]||a[2]&&a[8]||a[3]&&a[7]||a[4]&&a[6]||a[5]>=2) cout<<10<<endl; else cout<<0<<endl; if(t==1) if(a[0]&&a[1]||a[2]&&a[9]||a[3]&&a[8]||a[4]&&a[7]||a[5]&&a[6]) cout<<1<<endl; else cout<<0<<endl; if(t==2) if(a[0]&&a[2]||a[1]>=2||a[3]&&a[9]||a[4]&&a[8]||a[5]&&a[7]||a[6]>=2) cout<<2<<endl; else cout<<0<<endl; if(t==3) if(a[0]&&a[3]||a[1]&&a[2]||a[4]&&a[9]||a[5]&&a[8]||a[6]&&a[7]) cout<<3<<endl; else cout<<0<<endl; if(t==4) if(a[0]&&a[4]||a[1]&&a[3]||a[2]>=2||a[5]&&a[9]||a[6]&&a[8]||a[7]>=2) cout<<4<<endl; else cout<<0<<endl; if(t==5) if(a[0]&&a[5]||a[1]&&a[4]||a[2]&&a[3]||a[6]&&a[9]||a[7]&&a[8]) cout<<5<<endl; else cout<<0<<endl; if(t==6) if(a[0]&&a[6]||a[1]&&a[5]||a[2]&&a[4]||a[3]>=2||a[7]&&a[9]||a[8]>=2) cout<<6<<endl; else cout<<0<<endl; if(t==7) if(a[0]&&a[7]||a[1]&&a[6]||a[2]&&a[5]||a[3]&&a[4]||a[8]&&a[9]) cout<<7<<endl; else cout<<0<<endl; if(t==8) if(a[0]&&a[8]||a[1]&&a[7]||a[2]&&a[6]||a[3]&&a[5]||a[4]>=2||a[9]>=2) cout<<8<<endl; else cout<<0<<endl; if(t==9) if(a[0]&&a[9]||a[1]&&a[8]||a[2]&&a[7]||a[3]&&a[6]||a[4]&&a[5]) cout<<9<<endl; else cout<<0<<endl; //如上,依次判断能不能有两个数字组成ans%10或ans%10+10即可 return 0;//完 结 撒 花 }
- 1
信息
- ID
- 4760
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者