1、 算法提高 日期计算
问题描述
已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。
输入格式
输入只有一行 YYYY MM DD
输出格式
输出只有一行 W
数据规模和约定
1599 <= YYYY <= 2999 1 <= MM <= 12
1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期 1 <= W <= 7,分别代表周一到周日
样例输入
2011 11 11
样例输出
5
#include
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int main(void){
int y,m,d,i,temp=0,sum=0,j,u; scanf(\ for(i=0;i<2011;i++){
if((i%4==0)&&(i0!=0)||(i@0==0)) {
sum++; }
sum+=365;
}sum=sum+365-50; for(i=0;i if((i%4==0)&&(i0!=0)||(i@0==0)) { temp++; } temp+=365; } for(j=1;j if(((y%4==0)&&(y0!=0)||(y@0==0))&&(j==2))temp++; }temp+=d; } if(temp>=sum){ if((temp-sum+5)%7==0) printf(\ else printf(\}else{ u=sum-temp; if(u<=5){ printf(\ }else{ printf(\ } } return 0; 2、 算法提高 概率计算 问题描述 生成n个∈[a,b]的随机整数,输出它们的和为x的概率。 输入格式 一行输入四个整数依次为n,a,b,x,用空格分隔。 输出格式 输出一行包含一个小数位和为x的概率,小数点后保留四位小数 样例输入 2 1 3 4 样例输出 0.3333 数据规模和约定 对于50%的数据,n≤5. 对于100%的数据,n≤100,b≤100. #include int main() { int i,j,k; scanf(\ for(i=a;i<=b;i++) d[1][i]=1.0/(b-a+1); for(i=2;i<=n;i++) for(j=i*a;j<=i*b;j++) for(k=a;k<=b;k++) d[i][j]+=d[1][k]*d[i-1][j-k]; printf(\ return 0; } 3、算法提高 6-17复数四则运算 设计复数库,实现基本的复数加减乘除运算。 输入时只需分别键入实部和虚部,以空格分割,两个复数之间用运算符分隔;输出时按a+bi的格式在屏幕上打印结果。参加样例输入和样例输出。 注意考虑特殊情况,无法计算时输出字符串\。 样例输入 2 4 * -3 2 样例输出 -14-8i 样例输入 3 -2 + -1 3 样例输出 2+1i #include