上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 30 下一页
摘要: 题意是给出A个杯子,一开始都朝上,每次可以翻B个杯子,问最少需要翻转多少次可以让所有杯子都朝下。分类讨论:首先对于A%B==0一类情况,直接输出。对于A>=3B,让A减到[2B,3B)区间内,翻转次数累加上A/B-2。当A>=2B时,分奇偶讨论:A为奇数B为偶数显然无解;AB同奇偶时最多需要3次,A偶数B奇数最多需要4次。当A 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 5000 阅读全文
posted @ 2013-08-06 10:34 _随心所欲_ 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 思路:给一个数n,是否只有4个约数(包括1),也就是找3个大于1的约数。而任何一个数都可由质数表示,所以对于给定的数,只需要进行质因数分解。这里有2种情况:如果有3个一样的质因数,则满足条件;否则只需要2个不同的质因子。代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 500000111 using namespace std;12 ll n,e[5];13 in 阅读全文
posted @ 2013-08-06 08:56 _随心所欲_ 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 博弈论水题!!!代码如下: 1 #include 2 #include 3 using namespace std; 4 int main(){ 5 int i,t,n,k,m; 6 while(cin>>n){ 7 m=0;t=0; 8 for(i=0;i>k;10 if(k>=2) t++;11 m^=k;12 }13 if((m==0&&t>=2)||(m!=0&&t==0)) cout<<"No"<<endl;14 else cout<<"Ye... 阅读全文
posted @ 2013-08-05 22:17 _随心所欲_ 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 很简单的博弈论问题!!(注意全是1时是特殊情况)代码如下: 1 #include 2 #include 3 using namespace std; 4 int main(){ 5 int i,t,n,k,m; 6 bool flag; 7 scanf("%d",&t); 8 while(t--){ 9 scanf("%d",&n);10 flag=0;m=0;11 for(i=0;i>k;13 m^=k;14 if(k>1) flag=1;15 }1... 阅读全文
posted @ 2013-08-05 22:09 _随心所欲_ 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 纯数论题,不解释!!!!代码如下: 1 #include 2 int main(){ 3 int i,j,t,n,k=0,m; 4 scanf("%d",&t); 5 while(t--){ 6 scanf("%d",&n); 7 printf("Case #%d:\n",++k); 8 m=n*(n-1); 9 for(i=1;i<=n;i++){10 for(j=1;j<n;j++)11 printf("%d ",(i-1)*(n-1)+j);12... 阅读全文
posted @ 2013-08-05 21:26 _随心所欲_ 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 看懂题目,很容易想到容斥原理。刚开始我用的是二进制表示法实现容斥原理,但是一直超时。后来改为dfs就过了……代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 5000011 using namespace std;12 ll an[16],ans;13 int n;14 int get(ll n)15 {16 int t=0;17 while(n)... 阅读全文
posted @ 2013-08-05 20:59 _随心所欲_ 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 这题用到了卡特兰数,详情见:http://www.cnblogs.com/jackge/archive/2013/05/19/3086519.html解体思路详见:http://blog.csdn.net/lvlu911/article/details/5425974代码如下:#include#include#include#include#include#include#include#define ll __int64#define pi acos(-1.0)#define MAX 50000using namespace std;int an[19]={1,1,2,5,14,42,132 阅读全文
posted @ 2013-08-05 17:00 _随心所欲_ 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 例子:123以内0的个数:个位是0时:12*1;十位是0时:1*10;但是303的十位是0时的个数为2*10+4!代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 5000011 using namespace std;12 ll solve(ll n)13 {14 if(n>n>>m){32 if(n<0&&m<0) 阅读全文
posted @ 2013-08-05 15:50 _随心所欲_ 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 思路:首先要建立坐标,具体作法见:http://www.cnblogs.com/xin-hua/p/3237096.html然后将得到2坐标之差x,y;如果x,y同号,则相加,否则去最大.(要取绝对值的)代码如下: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define ll __int64 9 #define pi acos(-1.0)10 #define MAX 5000011 using namespace std;12 struct dir13 {14 int ... 阅读全文
posted @ 2013-08-05 10:07 _随心所欲_ 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 题目的意思很容易理解.就是找两个不同坐标的对应关系.下面的思路转自POJ的论坛首先,记由1到2的方向记为2,1到3的方向记为3……1到7的方向记为7,他们分别是:(0,1),(-1,1),(-1,0),(0,-1),(1,-1),(1,0);这些规律不仅对于1的周围六个方向有效,对于所有的点都是有效的。然后记1所在为圈1,2..7为圈1,8..19为圈2……,所以,很容易可以得到第n圈有蜂窝6n个(n>0),对于这个等差数列求和,S[1..n]=3n^2+3n,包括第0圈的1,则S[0..n]=3n^2+3n+1。读入数字x,解方程3n^2+3n+1=x,解出来n=[sqrt(12x-3 阅读全文
posted @ 2013-08-04 21:45 _随心所欲_ 阅读(420) 评论(0) 推荐(0) 编辑
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 30 下一页