又臭又长的烂代码 ......

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#define maxn 1010 using namespace std; char a[1010];
int num[10],last; //bool cc(int sum)
//{
// if(sum%3 == 0)
// return true;
// else if(sum % 3 == 1)
// {
// int v;
// for(v = 0; v < 3; v++)
// if(num[v*3+1])
// break;
// if(v == 3)
// {
// int tt = 2;
// for(int k = 0; tt && k < 3; k++)
// while(tt && (num[k*3+2]))
// {
// num[k*3+2]--;
// tt--;
// }
// if(tt)
// return false;
// }
// else
// num[v*3+1]--;
// }
// else
// {
// int v;
// for(v = 0; v < 3; v++)
// if(num[v*3+2])
// break;
// if(v == 3)
// {
// int tt = 2;
// for(int k = 0; tt && k < 3; k++)
// while(tt && (num[k*3+1]))
// {
// num[k*3+1]--;
// tt--;
// }
// if(tt)
// return false;
// }
// else
// num[v*3+2]--;
// }
// return true;
//}
bool cc(int sum)
{
if(sum%3 == 0)
return true;
else if(sum % 3 == 1)
{
if(num[1])
{
num[1]--;
return true;
}
else if(num[4])
{
num[4]--;
return true;
}
else if(num[7])
{
num[7]--;
return true;
}
else if(num[2] >= 2)
{
num[2] -= 2;
return true;
}
else if(num[2] && num[5])
{
num[2]--;
num[5]--;
return true;
}
else if(num[2] && num[8])
{
num[2]--;
num[8]--;
return true;
}
else if(num[5] >= 2)
{
num[5] -= 2;
return true;
}
else if(num[8] && num[5])
{
num[5]--;
num[8]--;
return true;
}
else if(num[8] >= 2)
{
num[8] -= 2;
return true;
}
}
else
{
if(num[2])
{
num[2]--;
return true;
}
else if(num[5])
{
num[5]--;
return true;
}
else if(num[8])
{
num[8]--;
return true;
}
else if(num[1] >= 2)
{
num[1] -= 2;
return true;
}
else if(num[1] && num[4])
{
num[1]--;
num[4]--;
return true;
}
else if(num[1] && num[7])
{
num[1]--;
num[7]--;
return true;
}
else if(num[4] >= 2)
{
num[4] -= 2;
return true;
}
else if(num[4] && num[7])
{
num[4]--;
num[7]--;
return true;
}
else if(num[7] >= 2)
{
num[7] -= 2;
return true;
}
}
return false;
}
bool findd(int sum)
{
if(!num[0] && !num[5])
return false; if(!num[0])
{
num[5]--;
last = 5;
return cc(sum);
}
else
{
num[0]--;
last = 0;
return cc(sum);
}
return false;
}
int main()
{
int t;
//freopen("d:/out.txt", "r", stdin);
//freopen("in.txt", "w", stdout);
scanf("%d",&t);
while(t--)
{
memset(num, 0, sizeof(num));
scanf("%s",a);
int len = strlen(a);
int sum = 0;
for(int i = 0; i < len; i++)
{
sum += a[i] - '0';
num[a[i]-'0']++;
}
last = 0;
bool flag = findd(sum);
int flag2 = 0;
if(flag)
{
for(int i = 9; i >= 1; i--)
{
for(int j = 0; j < num[i]; j++)
{
flag2 = 1;
printf("%d",i);
}
}
if(flag2)
{
for(int j = 0; j < num[0]; j++)
{
printf("%d",0);
}
printf("%d\n",last);
}
else
puts("0");
}
else
puts("impossible");
}
return 0;
}

spoj 416的更多相关文章

  1. SPOJ 416 Divisibility by 15 细节题

    一个结论:一个数,如果它的所有数字之和能被3整除,那么这个数也能被3整除. 最后一位肯定是0或者5,如果没有就impossible. 剩下的就是,如何删除尽量少的数,使所有数字之和为3的倍数. 情况比 ...

  2. SPOJ 416 - Divisibility by 15(贪心)

    糟烂的代码啊...  这个题目思路很简单——末位只可能为0和5,所有数字的和肯定被3整除 没有0和5的肯定不行 否则,把所有数字求和 如果被3整除,则从大到小输出 如果除3余1,则按以下顺序——删1: ...

  3. BZOJ 2588: Spoj 10628. Count on a tree [树上主席树]

    2588: Spoj 10628. Count on a tree Time Limit: 12 Sec  Memory Limit: 128 MBSubmit: 5217  Solved: 1233 ...

  4. SPOJ DQUERY D-query(主席树)

    题目 Source http://www.spoj.com/problems/DQUERY/en/ Description Given a sequence of n numbers a1, a2, ...

  5. SPOJ GSS3 Can you answer these queries III[线段树]

    SPOJ - GSS3 Can you answer these queries III Description You are given a sequence A of N (N <= 50 ...

  6. 【填坑向】spoj COT/bzoj2588 Count on a tree

    这题是学主席树的时候就想写的,,, 但是当时没写(懒) 现在来填坑 = =日常调半天lca(考虑以后背板) 主席树还是蛮好写的,但是代码出现重复,不太好,导致调试的时候心里没底(虽然事实证明主席树部分 ...

  7. SPOJ bsubstr

    题目大意:给你一个长度为n的字符串,求出所有不同长度的字符串出现的最大次数. n<=250000 如:abaaa 输出: 4 2 1 1 1 spoj上的时限卡的太严,必须使用O(N)的算法那才 ...

  8. HTTP状态码206和416

    HTTP 2xx范围内的状态码表明了:"客户端发送的请求已经被服务器接受并且被成功处理了". TTP/1.1 200 OK是HTTP请求成功后的标准响应 HTTP/1.1 206状 ...

  9. 【SPOJ 7258】Lexicographical Substring Search

    http://www.spoj.com/problems/SUBLEX/ 好难啊. 建出后缀自动机,然后在后缀自动机的每个状态上记录通过这个状态能走到的不同子串的数量.该状态能走到的所有状态的f值的和 ...

随机推荐

  1. SoftReference

    本文介绍对象的强.软.弱和虚引用的概念.应用及其在UML中的表示. 1.对象的强.软.弱和虚引用    在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说 ...

  2. JQuery验证工具

    一.写法一 var Validator = { // 邮箱isEmail : function(s) {var p = "^[-!#$%&\'*+\\./0-9=?A-Z^_`a-z ...

  3. OpenGL1-创建窗口(建立Win32的OpenGL开发环境 )(代码上传)

    视频教程请关注 http://edu.csdn.net/lecturer/lecturer_detail?lecturer_id=440 代码下载 #pragma once #include < ...

  4. (转)一些国外优秀的elasticsearch使用案例

    Github “Github使用Elasticsearch搜索20TB的数据,包括13亿的文件和1300亿行的代码” 这个不用介绍了吧,码农们都懂的,Github在2013年1月升级了他们的代码搜索, ...

  5. javascript笔记——密码组合规则

    //6-16个字符,字母加数字或符号的组合密码[必须全部包含] var filter = /^(?=.*[0-9])(?=.*[a-z])(?=.*[!@#$%^&*])(?=.*[A-Z]) ...

  6. 从对偶问题到KKT条件

    转自:http://xuehy.github.io/%E4%BC%98%E5%8C%96/2014/04/13/KKT/ 从对偶问题到KKT条件 Apr 13, 2014 对偶问题(Duality) ...

  7. C# Winform程序打包

    1.新建一个安装项目,起名“Setup3” 2.点击应用程序文件夹 3.在右侧右键点击添加文件 注意:是Debug文件夹下所有程序 接着在添加你的应用程序项目的时候,多添加一个msiexec.exe进 ...

  8. bootstrap响应式网页设计的9条基本原则!

    bootstrap响应式网页设计是针对多屏幕问题的一个很好的解决方案,但从印刷的视角来看有点困难.没有固定的页面尺寸,没有毫米或英寸,没有任何的物理限制,无从下手. 为了desktop和mobile单 ...

  9. ecshop订单中配送方式报错

    警告内容:Warning: number_format() expects parameter 1 to be double, string given in D:\wamp\www\ecshop_o ...

  10. 去掉代码中自动生成的TODO Auto-generated method stub

    Window --> Preferences -->Java -->Code Style -->Code Templates--> Code --> Method ...