摘要: Given an integer N(0 ≤ N ≤ 10000), your task is to calculate N!高精度处理,用字符串来存储。#include"iostream"using namespace std;char ans[35661];//10000的时候是35660位数int main(){ int n; while(cin>>n) { int i,digit=1; ans[0]=1; for(i=2;i<=n;i++) { int j,k; for(j=k=0;j<digit;j++) { int temp=ans[j] 阅读全文
posted @ 2011-05-04 13:27 Ac_smile 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 2176在简单的NIM游戏上输出取法策略AC代码:#include"iostream" using namespace std; int main() { int m; while(cin>>m,m) { int ans=0,i,s[200001]; for(i=0;i<m;i++) { cin>>s[i]; ans^=s[i]; } if(ans==0) { cout<<"No"<<endl; continue; } cout<<"Yes"<<endl; 阅读全文
posted @ 2011-05-04 12:41 Ac_smile 阅读(176) 评论(0) 推荐(0) 编辑
摘要: Input第一行是一个整数T,表示测试组数。接下来T行,每行一个整数 n ( 1<= |n| <=10^5 )。 Output以实数形式输出1/n 。如果是循环小数的,只输出第一个循环节。 非循环节部分的长度k=max{abs(分子分母2的因子个数之差),abs(分子分母5的因子个数之差)}然后再输出直到重复为止就好了。#include"iostream" using namespace std; int before(int n) //计算非循环节长度k { int c2=0,c5=0; while(n%2==0) { c2++; n/=2; } while( 阅读全文
posted @ 2011-05-03 22:20 Ac_smile 阅读(435) 评论(0) 推荐(0) 编辑
摘要: Tom和Jerry正在玩一种Northcott游戏,可是Tom老是输,因此他怀疑这个游戏是不是有某种必胜策略,郁闷的Tom现在向你求救了,你能帮帮他么? 游戏规则是这样的: 如图所示,游戏在一个n行m列(1 ≤ n ≤ 1000且2 ≤ m ≤ 100)的棋盘上进行,每行有一个黑子(黑方)和一个白子(白方)。执黑的一方先行,每次玩家可以移动己方的任何一枚棋子到同一行的任何一个空格上,当然这过程中不许越过该行的敌方棋子。双方轮流移动,直到某一方无法行动为止,移动最后一步的玩家获胜。Tom总是先下(黑方)。图1是某个初始局面,图二是Tom移动一个棋子后的局面(第一行的黑子左移两步)。 图1Inpu 阅读全文
posted @ 2011-05-02 23:46 Ac_smile 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 1、 总共n张牌; 2、 双方轮流抓牌; 3、 每人每次抓牌的个数只能是2的幂次(即:1,2,4,8,16…) 4、 抓完牌,胜负结果也出来了:最后抓完牌的人为胜者;AC代码#include"iostream"using namespace std;int main(){int n;while(cin>>n){if(n%3==0)cout<<"Cici"<<endl;else cout<<"Kiki"<<endl;}return 0;} 阅读全文
posted @ 2011-05-02 21:38 Ac_smile 阅读(213) 评论(0) 推荐(0) 编辑
摘要: The electron is described in terms of its probability distribution or probability density. This probability distribution does not have definite cutoff points; its edges are somewhat fuzzy. Hence the term "electron cloud." This cloudy probability distribution takes on different shapes, depe 阅读全文
posted @ 2011-05-01 21:07 Ac_smile 阅读(271) 评论(2) 推荐(1) 编辑
摘要: 大意是输入a,b;求出有多少对数p,q满足GCD(p,q) =a;LCM(p,q) =b。输出对数。思路是令x=lcm/gcd(如果lcm不能被整除,则输出0);然后再将x素因子分解,判断x有k个互异的素因子,对数为2^k。代码如下:#include"stdio.h"#include"math.h"int main(){int a,b;while(scanf("%d%d",&a,&b)!=EOF){ if(b%a!=0){printf("0\n");continue;}int n=0,ans=1;b 阅读全文
posted @ 2011-05-01 01:28 Ac_smile 阅读(231) 评论(0) 推荐(1) 编辑
摘要: 皮克定理为我们解答了关于多边形面积和格点数的一些内在关系,具体如下:(前提是顶点坐标都是整数点或是正方形格点的简单多边形)我们假设简单多边形A的面积是S,A内部的格点数为kin,A边上格点数数目为kon,则它们之间存在如下关系:S=kin+kon/2-1。wikipedia上的详细证明PKU 2954就是皮克定理的简单应用。代码如下:#include"stdio.h"#include"math.h"#define abs(x) ((x)>0?(x):-(x))struct point{int x,y;};int gcd(int a,int b){ 阅读全文
posted @ 2011-04-30 20:21 Ac_smile 阅读(664) 评论(0) 推荐(1) 编辑
摘要: 求各数位之和;运用弃九法可以很快解出,但一开始没想到出入的会是字符串,WA了几次,AC代码如下#include"iostream"#include"string"using namespace std;int main(){ string str; while(cin>>str,str!="0") { int n=0; for(string::size_type i=0;i!=str.size();i++) n+=str[i]-'0'; n%=9; if(n==0) n=9; cout<<n&l 阅读全文
posted @ 2011-04-30 16:10 Ac_smile 阅读(242) 评论(0) 推荐(1) 编辑