一个结论:一个数,如果它的所有数字之和能被3整除,那么这个数也能被3整除。

最后一位肯定是0或者5,如果没有就impossible。

剩下的就是,如何删除尽量少的数,使所有数字之和为3的倍数。

情况比较多,注意考虑全面。

 #include <cstdio>
#include <cstring>
#include <cstdlib> using namespace std; const int MAXN = ; char str[MAXN];
int cnt[];
int end; void OutPut()
{
bool ok = false;
for ( int i = ; i > ; --i )
{
for ( int j = ; j < cnt[i]; ++j )
{
if (i) ok = true;
printf( "%d", i );
}
} if ( ok )
{
for ( int i = ; i < cnt[]; ++i )
putchar('');
} if ( end == ) puts("");
else puts(""); return;
} bool solved( int sum )
{
int left = sum % ; //删一个数
if ( cnt[left] )
{
--cnt[left];
return true;
}
if ( cnt[ + left] )
{
--cnt[left + ];
return true;
}
if ( cnt[ + left ] )
{
--cnt[ + left ];
return true;
} //删两个数
if ( left == )
{
if ( cnt[] >= )
{
cnt[] -= ;
return true;
}
if ( cnt[] && cnt[] )
{
--cnt[], --cnt[];
return true;
}
if ( cnt[] >= )
{
cnt[] -= ;
return true;
}
if ( cnt[] && cnt[] )
{
--cnt[], --cnt[];
return true;
}
if ( cnt[] && cnt[] )
{
--cnt[], --cnt[];
return true;
}
if ( cnt[] >= )
{
cnt[] -= ;
return true;
}
}
else
{
if ( cnt[] >= )
{
cnt[] -= ;
return true;
}
if ( cnt[] && cnt[] )
{
--cnt[], --cnt[];
return true;
}
if ( cnt[] >= )
{
cnt[] -= ;
return true;
}
if ( cnt[] && cnt[] )
{
--cnt[], --cnt[];
return true;
}
if ( cnt[] && cnt[] )
{
--cnt[], --cnt[];
return true;
}
if ( cnt[] >= )
{
cnt[] -= ;
return true;
}
}
return false;
} int main()
{
//freopen( "in.txt", "r", stdin );
//freopen( "out.txt", "w", stdout );
int T;
scanf( "%d", &T );
while ( T-- )
{
scanf( "%s", str );
memset( cnt, , sizeof(cnt) );
for ( int i = ; str[i]; ++i )
++cnt[ str[i] - '' ]; if ( !cnt[] && !cnt[] )
{
puts("impossible");
continue;
} int sum = ;
for ( int i = ; i < ; ++i )
sum += i * cnt[i]; if ( cnt[] )
--cnt[], end = ;
else
--cnt[], end = ; if ( sum % == )
{
if ( sum == )
{
puts("");
continue;
}
OutPut();
}
else
{
if ( solved( sum ) ) OutPut();
else puts("impossible");
}
}
return ;
}

SPOJ 416 Divisibility by 15 细节题的更多相关文章

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

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

  2. Codeforces Round #392 (Div. 2)-758D. Ability To Convert(贪心,细节题)

    D. Ability To Convert time limit per test 1 second Cmemory limit per test 256 megabytes input standa ...

  3. 【线段树 细节题】bzoj1067: [SCOI2007]降雨量

    主要还是细节分析:线段树作为工具 Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小 ...

  4. zoj 3745 Salary Increasing(坑爹的细节题!)

    题目 注意题目中的,引用绝望的乐园中的进一步解释如下: 这是一道浙大月赛的题,一如既往的坑爹,好好一道水题,被搞成一道坑题!!! //注意:r(i) < l(i+1) !细节啊细节! #incl ...

  5. 【20171027中】alert(1) to win 第13,14,15,16题

    第13题 题目: function escape(s) { var tag = document.createElement('iframe'); // For this one, you get t ...

  6. 【交互 细节题 思维题】cf1064E. Dwarves, Hats and Extrasensory Abilities

    第一次做交互真有趣……:挺好的细节思维题 This is an interactive problem. In good old times dwarves tried to develop extr ...

  7. 【2019.10.7 CCF-CSP-2019模拟赛 T2】绝对值(abs)(线段树细节题)

    找规律 设\(p_i=a_{i+1}-a_i\),则答案就是\(\sum_{i=1}^{n-1}p_i\). 考虑若将\(a_i\)加上\(x\)(边界情况特殊考虑),就相当于是将\(p_{i-1}\ ...

  8. bzoj1067——SCOI2007降雨量(线段树,细节题)

    题目描述 我们常常会说这样的话:"X年是自Y年以来降雨量最多的".它的含义是X年的降雨量不超过Y年,且对于任意\(Y<Z<X\),Z年的降雨量严格小于X年.例如2002 ...

  9. Codeforces 571E - Geometric Progressions(数论+阿巴细节题)

    Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉此题思维难度不太大,不过大概是细节多得到了精神污染的地步所以才放到 D1E 的罢((( 首先我们对所有 \(a_i,b_i\ ...

随机推荐

  1. NSIS中判断.net framework 是否安装

    在网上找了几个脚本,原理都是读取注册表进行判断,都可以用. 1.CheckDotNetFramework /* * Name: CheckDotNetFramework.nsh * Version: ...

  2. httpclient模拟浏览器get\post

    一般的情况下我们都是使用IE或者Navigator浏览器来访问一个WEB服务器,用来浏览页面查看信息或者提交一些数据等等.所访问的这些页面有的仅 仅是一些普通的页面,有的需要用户登录后方可使用,或者需 ...

  3. mybatis insert 如何返回主键

    在使用ibatis插入数据进数据库的时候,会用到一些sequence的数据,有些情况下,在插入完成之后还需要将sequence的值返回,然后才能进行下一步的操作.       使用ibatis的sel ...

  4. Unity--截取屏幕任意区域

    原地址:http://blog.csdn.net/tanmengwen/article/details/8501612 void Update () { if(Input.GetKeyDown(Key ...

  5. PHP READ PPT FILE

    function parsePPT($filename) { // This approach uses detection of the string "chr(0f).Hex_value ...

  6. Random的用法

    import java.util.Random; public class RandomTest { public static void main(String[] args) { Random r ...

  7. HDU 1789 Doing Homework again (贪心)

    Doing Homework again http://acm.hdu.edu.cn/showproblem.php?pid=1789 Problem Description Ignatius has ...

  8. Sql Server总结

     主键 主键就是数据行的唯一标识.不会重复的列,才能当主键.一个表可以没有主键,但是会非常难以处理,因此没有特殊理由表都要设定主键.主键有两种选用策略:业务主键和逻辑主键. 业务主键是使用有业务意义的 ...

  9. error LNK2019: 无法解析的外部符号 ___glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用 1>GEARS.obj : er

    转: http://blog.csdn.net/bill_ming/article/details/8150111 opengl的高级菜鸟问题 看了一本书<OpenGL三维图形系统开发与应用技术 ...

  10. UVA 11361 - Investigating Div-Sum Property 数位DP

    An integer is divisible by 3 if the sum of its digits is also divisible by 3. For example, 3702 is d ...