SPOJ 416 Divisibility by 15 细节题
一个结论:一个数,如果它的所有数字之和能被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 细节题的更多相关文章
- SPOJ 416 - Divisibility by 15(贪心)
糟烂的代码啊... 这个题目思路很简单——末位只可能为0和5,所有数字的和肯定被3整除 没有0和5的肯定不行 否则,把所有数字求和 如果被3整除,则从大到小输出 如果除3余1,则按以下顺序——删1: ...
- 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 ...
- 【线段树 细节题】bzoj1067: [SCOI2007]降雨量
主要还是细节分析:线段树作为工具 Description 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小 ...
- zoj 3745 Salary Increasing(坑爹的细节题!)
题目 注意题目中的,引用绝望的乐园中的进一步解释如下: 这是一道浙大月赛的题,一如既往的坑爹,好好一道水题,被搞成一道坑题!!! //注意:r(i) < l(i+1) !细节啊细节! #incl ...
- 【20171027中】alert(1) to win 第13,14,15,16题
第13题 题目: function escape(s) { var tag = document.createElement('iframe'); // For this one, you get t ...
- 【交互 细节题 思维题】cf1064E. Dwarves, Hats and Extrasensory Abilities
第一次做交互真有趣……:挺好的细节思维题 This is an interactive problem. In good old times dwarves tried to develop extr ...
- 【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}\ ...
- bzoj1067——SCOI2007降雨量(线段树,细节题)
题目描述 我们常常会说这样的话:"X年是自Y年以来降雨量最多的".它的含义是X年的降雨量不超过Y年,且对于任意\(Y<Z<X\),Z年的降雨量严格小于X年.例如2002 ...
- Codeforces 571E - Geometric Progressions(数论+阿巴细节题)
Codeforces 题目传送门 & 洛谷题目传送门 u1s1 感觉此题思维难度不太大,不过大概是细节多得到了精神污染的地步所以才放到 D1E 的罢((( 首先我们对所有 \(a_i,b_i\ ...
随机推荐
- Drools规则加载变量冲突问题分析
问题现象说明 在个别环境下加载规则时出现:rule/trade/hg/Rule_FY_*.java (53:3948) : Duplicate local variable paraMap,出现此问题 ...
- Posix线程编程指南(1) 线程创建与取消
线程创建 1.1 线程与进程 相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列.在串行程序基础上引入线程和进程是为了提高程序的 ...
- 【POJ】【1635】Subway Tree Systems
树的最小表示法 给定两个有根树的dfs序,问这两棵树是否同构 题解:http://blog.sina.com.cn/s/blog_a4c6b95201017tlz.html 题目要求判断两棵树是否是同 ...
- asp.net中实现群发邮件功能
前段时间在帮老师开发的网站中需要用到一个群发邮件的功能,而自己之前学习cms系统的时候用的we7的群发邮件功能也有一些问题,于是乎便自己去网上查了一下资料,自己总结了一下,并且封装成了一个类,亲测有用 ...
- Linux查看日志命令
tail -f /var/log/apport.log more /var/log/xorg.0.log cat /var/log/mysql.err less /var/log/messages g ...
- 对话框Dialog
QMainWindow QMainWindow是 Qt 框架带来的一个预定义好的主窗口类. 主窗口,就是一个普通意义上的应用程序(不是指游戏之类的那种)最顶层的窗口.通常是由一个标题栏,一个菜单栏,若 ...
- web之困:现代web应用安全指南
<web之困:现代web应用安全指南>在web安全领域有“圣经”的美誉,在世界范围内被安全工作者和web从业人员广为称道,由来自google chrome浏览器团队的世界顶级黑客.国际一流 ...
- 全栈式JavaScript
如今,在创建一个Web应用的过程中,你需要做出许多架构方面的决策.当然,你会希望做的每一个决定都是正确的:你想要使用能够快速开发的技术,支持持续的迭代,最高的工作效率,迅速,健壮性强.你想要精益求精并 ...
- MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群)
MariaDB Galera Cluster 部署(如何快速部署 MariaDB 集群) OneAPM蓝海讯通7月3日 发布 推荐 4 推荐 收藏 14 收藏,1.1k 浏览 MariaDB 作为 ...
- Java日志记录的事儿
一.java日志组件 1.common-logging common-logging是apache提供的一个通用的日志接口.用户可以自由选择第三方的日志组件作为具体实现,像log4j,或者jdk自带的 ...