codeforces 214B Hometask
来源:互联网 发布:ubuntu 15.04 编辑:程序博客网 时间:2024/04/26 05:22
题目链接:http://codeforces.com/problemset/problem/214/B
用最纯粹的数学方法做的 首先要满足2与5的公倍数,则里面必须有0;
其次对于3:如果sum%3=0,那就好办,直接排序输出;
如果sum%3!=0,那就在这群数中减去余数相同的最小一个,如果没存在余数相同的,就找俩个,因为%3的余数不是1就是2,而(1+1)%3与(2+2)%3,正好与另一个余数相等;
注意:按上诉方法删掉数后,注意是否全为0;要不会输出一串0。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int a[150000];bool cmp(int a,int b){ return a>b;}int main(){ int n; while(scanf("%d",&n)!=EOF) { int sum=0,i,b[10],t=0; memset(b,0,sizeof(b));//注意初始化 for(i=1;i<=n;i++) { scanf("%d",&a[i]); sum+=a[i]; b[a[i]]++;//记录每个数出现的次数 if(a[i]==0) t++; } if(t==0) printf("-1\n"); else if(t==n||(sum%3!=0&&t==n-1)) printf("0\n"); else { sort(a+1,a+n+1,cmp); if(sum%3==0) { for(i=1;i<=n;i++) printf("%d",a[i]); printf("\n"); } else { int p=sum%3; if(b[p]!=0||b[p+3]!=0||b[p+6]!=0) { int t1,p1=0,p2=0;//p1=1则t1已被去掉一次,p2=2,已经在输出非0数,所以不可能全是0了; if(b[p]!=0) t1=p; else if(b[p+3]!=0) t1=p+3; else if(b[p+6]!=0) t1=p+6; //printf("~~%d~~\n",t1); for(i=1;i<=n;i++) { if(a[i]==t1&&p1==0) {p1=1;} else if(a[i]==0&&p2==0) {printf("0");p2=1;} else if(a[i]==0&&p2==1) {continue;} else {printf("%d",a[i]);p2=2;} } } else { int t2,t3,q1=0,q2=0,q3=0;//q1(2)=1则t1(2)已被去掉一次,q3=2,已经在输出非0数,所以不可能全是0了; int m=(p+p)%3; if(b[m]>=2) t2=t3=m; else if(b[m]==1&&b[m+3]>0) {t2=m;t3=m+3;} else if(b[m+3]>=2) t2=t3=m+3; else if(b[m+3]==1&&b[m+6]>0) {t2=m+3;t3=m+6;} else t2=t3=m+6; for(i=1;i<=n;i++) { if(a[i]==t2&&q1==0) {q1=1;continue;} else if(a[i]==t3&&q2==0) {q2=1;continue;} else { if(a[i]==0&&q3==0) {printf("0");q3=1;} else if(a[i]==0&&q3==1) {continue;} else {printf("%d",a[i]);q3=2;} } } } printf("\n"); } } } return 0;}
- codeforces 214B Hometask
- Hometask--codeForces 214B
- codeforces 214B - Hometask
- Codeforces 214B Hometask
- codeforces 214B Hometask
- CF 214 B Hometask.cpp
- Codeforce 214 Div 2 B.Hometask
- Codeforces Round #131 Hometask
- Codeforces 155 C. Hometask
- Codeforces 154A Hometask
- codeforces C. Hometask(贪心)
- codeforces 154A Hometask 贪心 dp
- Codeforces 155C Hometask【思维+Dp】
- Codeforces Round #109 (Div. 2)-C. Hometask-思维
- CodeForces 214B
- DP : Hometask
- Hometask--LCA
- codeforces B
- ZOJ-3640-Help Me Escape
- java.net.URL 设置代理服务器和自定义Host头绕过DNS解析
- Python学习笔记之函数生成器
- WPF DATEPICKER 设置当前日期
- 高效率赢得胜利
- codeforces 214B Hometask
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- VC++之控件之改变编辑框内字体颜色
- Java中多态的实现机制
- NIO demo:EchoServer
- Windows 小工具软件:截屏,录音,音频转换
- MVC 3.0 在各个版本IIS中的部署
- Spring Aop 日志拦截器
- 打造小型Linux系統