随笔分类 -  NYOJ

摘要:An problem about date时间限制:2000 ms | 内存限制:65535 KB难度:2描述acm的iphxer经常忘记某天是星期几,但是他记那天的具体日期,他希望你能写个程序帮帮他。输入每行有三个整数 year,month,day,日期在1600年1月1日到9600年1月1日之间;输出输出对应的星期,用一个整数表示;(星期一到星期六用1-6表示,星期日用0表示)样例输入2011 3 61949 10 12011 4 11945 8 15样例输出0653/*有人说蔡勒公式也可以,没试过*/#include<stdio.h>#include<string.h& 阅读全文
posted @ 2012-06-17 23:43 加拿大小哥哥
摘要:邮票分你一半时间限制:1000 ms | 内存限制:65535 KB难度:3描述小珂最近收集了些邮票,他想把其中的一些给他的好朋友小明。每张邮票上都有分值,他们想把这些邮票分成两份,并且使这两份邮票的分值和相差最小(就是小珂得到的邮票分值和与小明的差值最小),现在每张邮票的分值已经知道了,他们已经分... 阅读全文
posted @ 2012-06-13 21:41 加拿大小哥哥
摘要:笨小熊时间限制:2000 ms | 内存限制:65535 KB难度:2描述笨小熊的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设maxn是单词中出现次数最多的字母的出现次数,minn是单词中出现次数最少的字母的出现次数,如果maxn-minn是一个质数,那么笨小熊就认为这是个Lucky Word,这样的单词很可能就是正确的答案。 输入第一行数据N(0<N<100)表示测试数据组数。每组测试数据输入只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。输出每组测试 阅读全文
posted @ 2012-06-11 23:53 加拿大小哥哥
摘要:素数距离问题时间限制:3000 ms | 内存限制:65535 KB难度:2描述现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度。如果左右有等距离长度素数,则输出左侧的值及相应距离。如果输入的整数本身就是素数,则输出该素数本身,距离输出0输入第一行给出测试数据组数N(0<N<=10000)接下来的N行每行有一个整数M(0<M<1000000),输出每行输出两个整数 A B.其中A表示离相应测试数据最近的素数,B表示其间的距离。样例输入36810样例输出5 17 111 1 #include<stdio.h>#include& 阅读全文
posted @ 2012-06-10 23:41 加拿大小哥哥
摘要:#include<stdio.h>int main(){ int k,i,j;int num=1,n; int a[100][100]; scanf("%d",&n);// for(i=1;i<=n;i++) // for(j=1;j<=n;j++) // scanf("%d",&a[i][j]); for(k=2;k<=2*n;k++) for(i=1;i<=n;i++) for(j=1;j<=n;j++) if(i+j==k&&(k&1)) a[i][j]=num++; 阅读全文
posted @ 2012-06-10 21:58 加拿大小哥哥
摘要:数数小木块时间限制:3000 ms | 内存限制:65535 KB难度:1描述在墙角堆放着一堆完全相同的正方体小木块,如下图所示:因为木块堆得实在是太有规律了,你只要知道它的层数就可以计算所有木块的数量了。现在请你写个程序 给你任一堆木块的层数,求出这堆木块的数量.输入第一行是一个整数N(N<=10)表示测试数据的组数)接下来的n行 每行只有一个整数 ,表示这堆小木块的层数, 输出 对应每个输入的层数有一个输出,表示这堆小木块的总数量,每个输出占一行 样例输入 215样例输出135 //实际就是1+(1+2)+(1+2+3)+……+(1+2+3+……+n)#include <std 阅读全文
posted @ 2012-06-03 23:02 加拿大小哥哥
摘要:题意:3*n+1问题,输出区间内的最大处理次数#include<stdio.h>int a[10001];void fun(){ int temp,cnt;int i,k=0; for(i=1;i<=10001;i++) { temp=i;cnt=0;//cnt初始化必须在for内 while(temp!=1) { if(temp&1) temp=3*temp+1; else temp>>=1; cnt++; //printf("%d\n",cnt); } a[k++]=cnt;//实际上k没必要,k相当于(i-1) }}in... 阅读全文
posted @ 2012-06-03 22:51 加拿大小哥哥
摘要:矩形的个数时间限制:1000 ms | 内存限制:65535 KB难度:1描述在一个3*2的矩形中,可以找到6个1*1的矩形,4个2*1的矩形3个1*2的矩形,2个2*2的矩形,2个3*1的矩形和1个3*2的矩形,总共18个矩形。给出A,B,计算可以从中找到多少个矩形。输入 本题有多组输入数据(<10000),你必须处理到EOF为止输入2个整数A,B(1<=A,B<=1000)输出 输出找到的矩形数。 样例输入 1 23 2样例输出318 //长宽各选两个点#include <stdio.h>int main(){ long long a,b; while(sca 阅读全文
posted @ 2012-06-03 22:47 加拿大小哥哥
摘要:回转填数(题目叫蛇形填数)时间限制:3000 ms | 内存限制:65535 KB难度:3描述在n*n方陈里填入1,2,...,n*n,要求填成蛇形。例如n=4时方陈为:10 11 12 19 16 13 28 15 14 37 6 5 4输入 直接输入方陈的维数,即n的值。(n<=100) 输出 输出结果是蛇形方陈。 样例输入 3样例输出7 8 16 9 25 4 3#include <stdio.h>int main(){ int a[101][100]={0};int i,j,k;int n,num,x,y; num=1; scanf("%d",&a 阅读全文
posted @ 2012-06-03 13:43 加拿大小哥哥
摘要:/*fibonacci数列对10000取余,30000一个周期;fibonacci数列对100000取余,150000一个周期;*/#include<stdio.h>#define MMP 30000int f[MMP];int main(){ int i; f[0] = 0; f[1] = 1; for(i = 2;i <=MMP; i++)/*<= 之间不能有空格 */ { f[i] = (f[i-1] +f[i-2])%10000; } int n; while(scanf("%d",&n),n!=-1) { printf(" 阅读全文
posted @ 2012-06-01 23:32 加拿大小哥哥
摘要:#include <stdio.h>#include<math.h>//#include<algorithm>#define N 500001int a[N];int main(){ int m,temp;int i,j,T; for(int i = 0;i<N;i++) a[i]=1; // fill(a,a+N,1); // temp=(int)(sqrt(N)+0.5); for(i=2;i<=N/2;i++)//不能用temp for(j=i*2;j<N;j+=i) a[j]+=i; scanf("%d",... 阅读全文
posted @ 2012-06-01 14:12 加拿大小哥哥
摘要:因子和阶乘时间限制:1000 ms | 内存限制:65535 KB难度:2描述给你一个正整数n,把n!=1x2x3x.....xn分解成素因子相乘的形式,并从小到大输出每个素因子的指数,但要保证最后输出的素因子个数不为0。例如825应表示为0,1,2,0,1表示分别有0,1,2,0,1个2,3,5,7,11。输入第一行有一个整数n(0<n<10000),表示有n组测试数据;接下来n行每行有一个整数 m(1<m<10000) 输出 从小到大输出m分解成素因子相乘后各个素因子对应的指数 样例输入 2553样例输出3 1 149 23 12 8 4 4 3 2 2 1 1 1 阅读全文
posted @ 2012-06-01 13:15 加拿大小哥哥
摘要:最大素因子时间限制:1000 ms | 内存限制:65535 KB难度:2描述i c e最近正在学习数论中的素数,但是现在他遇到了一个难题:给定一个整数n,要求我们求出n的最大素因子的序数,例如:2的序数是1,3的序数是2,5的序数是3,以此类推. 研究数论是需要很大的耐心的,为了惩罚那些没有耐心读完题目的童鞋,我们规定:1的最大素因子序数是0.输入有多组测试数据,每一行输入一个数字n.(0<n<=1000000)输出在接下来的一行,输出结果.样例输入12345样例输出01213 #include<stdio.h>#include<math.h>#defin 阅读全文
posted @ 2012-06-01 12:01 加拿大小哥哥
摘要:p次方求和时间限制:1000 ms | 内存限制:65535 KB难度:3描述一个很简单的问题,求1^p+2^p+3^p+……+n^p的和。输入第一行单独一个数字t表示测试数据组数。接下来会有t行数字,每行包括两个数字n,p,输入保证0<n<=1000,0<=p<=1000。输出 输出1^p+2^p+3^p+……+n^p对10003取余的结果,每个结果单独占一行。 样例输入 210 110 2样例输出55385 阅读全文
posted @ 2012-05-31 23:49 加拿大小哥哥
摘要:#include<stdio.h>#include<string.h>#include<ctype.h>#define MAXN 5001char buf[MAXN],s[MAXN];int p[MAXN];int main(){ int T,i,j;int len,m,max,x,y; scanf("%d%*c",&T); while(T--) { //fgets(buf,sizeof(buf),stdin); scanf("%[^\n]%*c",buf); len = strlen(buf); for(i 阅读全文
posted @ 2012-05-30 17:48 加拿大小哥哥
摘要:兄弟郊游问题时间限制:3000 ms | 内存限制:65535 KB难度:2描述兄弟俩骑车郊游,弟弟先出发,每分钟X米,M分钟后,哥哥带一条狗出发。以每分钟Y米的速度去追弟弟,而狗则以每分钟Z米的速度向弟弟跑去,追上弟弟后又立即返回,直到哥哥追上弟弟时,狗跑了多少米?输入第一行输入一个整数N,表示测试数据的组数(N<100)每组测试数据占一行,是四个正整数,分别为M,X,Y,Z(数据保证X<Y<Z) 输出 输出狗跑的路径,结果保留小数点后两位。 样例输入 15 10 15 20样例输出200.00//求出相遇时间1.0*x*m/(y-x)#include<stdio.h 阅读全文
posted @ 2012-05-30 15:30 加拿大小哥哥
摘要:#include#include#define maxn 100005int dp[maxn],a[maxn],w[maxn];int main(){ int i,j,num,sum,t,cnt(1); while(~scanf("%d%d%d%d%d%d%d%d%d%d",&a[0],... 阅读全文
posted @ 2012-05-30 14:30 加拿大小哥哥
摘要://前92位斐数,这是long long的存储范围#include/*迭代法*/void fun(int n){ int i; long long a1=a2=1,a3; for(i=1;ilong long a[94];int flag=-1;/*标志递归*/void fun(){ int i; ... 阅读全文
posted @ 2012-05-30 12:54 加拿大小哥哥
摘要:小光棍数时间限制:1000 ms | 内存限制:65535 KB难度:1描述最近Topcoder的XD遇到了一个难题,倘若一个数的三次方的后三位是111,他把这样的数称为小光棍数。他已经知道了第一个小光棍数是471,471的三次方是104487111,现在他想知道第m(m<=10000000000)个小光棍数是多少?输入有多组测试数据。第一行一个整数n,表示有n组测试数据。接下来的每行有一个整数m。输出输出第m个小光棍数。样例输入11样例输出471#include<stdio.h>int main(){ int T; long long num; scanf("%d 阅读全文
posted @ 2012-05-30 12:10 加拿大小哥哥
摘要:有的题目要求“恰好装满背包”时的最优解,有的题目则并没有要求必须把背包装满。一种区别这两种问法的实现方法是在初始化的时候有所不同。 如果是第一种问法,要求恰好装满背包,那么在初始化时除了f[0]为0其它f[1..V]均设为-∞,这样就可以保证最终得到的f[N]是一种恰好装满背包的最优解。 如果并没有... 阅读全文
posted @ 2012-05-28 22:47 加拿大小哥哥