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\ ...
随机推荐
- 【Anagrams】 cpp
题目: Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will ...
- xcode 运行报错 Command /usr/bin/codesign failed with exit code 1
因为更换了证书,导致在运行时报错 Command /usr/bin/codesign failed with exit code 1,查看了网上各种方法,最后发现以下两个值没有同步更新
- 【转载】oracle 分区表详解
一.分区表的概述: Oracle的表分区功能通过改善可管理性.性能和可用性,从而为各式应用程序带来了极大的好处.通常,分区可以使某些查询以及维护操作的性能大大提高.此外,分区还可以极大简化常见 ...
- asp.net中实现群发邮件功能
前段时间在帮老师开发的网站中需要用到一个群发邮件的功能,而自己之前学习cms系统的时候用的we7的群发邮件功能也有一些问题,于是乎便自己去网上查了一下资料,自己总结了一下,并且封装成了一个类,亲测有用 ...
- Java递归列出目录下全部文件
Java递归列出目录下全部文件 /** * 列出指定目录的全部内容 * */ import java.io.*; class hello{ public static void main(String ...
- HDOJ 1466 计算直线的交点数
将n 条直线排成一个序列,直线2和直线1最多只有一个交点,直线3和直线1,2最多有两个交点,......,直线n 和其他n-1条直线最多有n-1个交点.由此得出n条直线互不平行且无三线共点的最多交点数 ...
- 一张思维导图说明jQuery的AJAX请求机制
比文字描述清晰多了吧?而且越是复杂的逻辑,思维导图的作用就越大,同时对阅读源码也是一种快捷的方法. 看不清楚的话可以右键,在新标签页中打开图片,或者保存本地.
- 结合NGUI做的手机拍照(可自定义相框)
原地址:http://www.unity蛮牛.com/thread-18220-1-1.html 在次此之前我们先要了解一下下面的我要讲的几个内容: 一.为什么要用NGUI,因为NGUI的可以做屏幕自 ...
- 充分发挥异步在 ASP.NET 中的强大优势
作者:Brij Bhushan Mishra 最近几年,异步编程受到极大关注,主要是出于两个关键原因:首先,它有助于提供更好的用户体验,因为不会阻塞 UI 线程,避免了处理结束前出现 UI 界面挂起. ...
- 【剑指offer】连续子数组最大和
思路dp很清楚,就是要注意细节. int FindGreatestSumOfSubArray(vector<int> array) { ; ], tempsum = array[]; // ...