
杭电复试
月下思艳
众生百态,甘苦自知
展开
-
杭电oj 2046
/*在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.例如n=3时,为2× 3方格,骨牌的铺放方案有三种*/#include<stdio.h>void main(){ long long a[50] = {0}; int n, i; while (scanf("%d", &n) != EOF) { a[1] = 1; a[2] = 2; for (i = 3; i < 50; i++) { a[i] =原创 2021-03-16 13:50:52 · 212 阅读 · 0 评论 -
杭电oj 2045
/*有排成一行的n个方格,用红(Red)、粉(Pink)、绿(Green)三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不同色.求全部的满足要求的涂法.*/#include<stdio.h>void main(){ long long a[50] = {0}; int n, i; while (scanf("%d", &n) != EOF) { a[1] = 3; a[2] = 6; a[3] = 6; for (i = 4; i原创 2021-03-16 12:02:33 · 192 阅读 · 0 评论 -
杭电oj 2044
#include<stdio.h>void main(){ int n; scanf("%d", &n); int a, b; long long arr[51] ; int i; while (n--) { scanf("%d %d", &a, &b); arr[a] = 1; arr[a+1] = 1; arr[a+2] = 2; for (i = a+3; i < 51; i++) { arr[i] = ar原创 2021-03-15 12:37:24 · 181 阅读 · 0 评论 -
杭电oj 2043
/*首先,我们就要设置一个安全的密码。那什么样的密码才叫安全的呢?一般来说一个比较安全的密码至少应该满足下面两个条件:(1).密码长度大于等于8,且不要超过16。(2).密码中的字符应该来自下面“字符类别”中四组中的至少三组。这四个字符类别分别为:1.大写字母:A,B,C...Z;2.小写字母:a,b,c...z;3.数字:0,1,2...9;4.特殊符号:~,!,@,#,$,%,^;给你一个密码,你的任务就是判断它是不是一个安全的密码。*/#include<stdio.h原创 2021-03-15 10:21:08 · 257 阅读 · 0 评论 -
杭电oj 2042
/*由于徐老汉没钱,收费员就将他的羊拿走一半,看到老汉泪水涟涟,犹豫了一下,又还给老汉一只。巧合的是,后面每过一个收费站,都是拿走当时羊的一半,然后退还一只,等到老汉到达市场,就只剩下3只羊了。你,当代有良知的青年,能帮忙算一下老汉最初有多少只羊吗?输入数据第一行是一个整数N,下面由N行组成,每行包含一个整数a(0<a<=30),表示收费站的数量。对于每个测试实例,请输出最初的羊的数量,每个测试实例的输出占一行。*/#include<stdio.h>void main原创 2021-03-14 10:23:09 · 241 阅读 · 1 评论 -
杭电oj 2041
/*有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。*/#include<stdio.h>int f(int m){ long x = 0; if (m == 2) x = 1; else if (m == 3) x = 2; else x = f(m - 1) + f(m - 2);原创 2021-03-14 09:47:56 · 186 阅读 · 0 评论 -
杭电oj 2040
#include <stdio.h>int main(){int n, a, b;while (scanf("%d", &n) != EOF){while (n–){scanf("%d %d", &a, &b);int sum1 = 0;int sum2 = 0;for (int i = 1; i < a; i++){if (a % i == 0){sum1 = sum1 + i;}}for (int j = 1; j <原创 2021-03-14 09:20:29 · 135 阅读 · 0 评论 -
杭电oj 2039
/*给定三条边,请你判断一下能不能组成一个三角形。*/#include<stdio.h>void main(){int a,b,c;int m;while(scanf("%d",&m)!=EOF){for(int i=0;i<m;i++){scanf("%d %d %d",&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){printf(“YES\n”);}e原创 2021-03-13 10:45:04 · 169 阅读 · 0 评论 -
杭电oj 2036
/*输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2… xn, yn),为了简化问题,这里的所有坐标都用整数表示。输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。*/#include<stdio.h>void main(){int n;int x[3],y[3];double sum;原创 2021-03-12 11:42:04 · 391 阅读 · 0 评论 -
杭电oj 2035
/*求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”/#include<stdio.h>void main(){int a,b;int sum;while(scanf("%d%d",&a,&b)!=EOF){if(a0&&b0)break;sum=1;for(int i=0;i<b;i++){sum=suma%1000;}printf("%d\n",sum);}}...原创 2021-03-12 10:48:07 · 179 阅读 · 0 评论 -
杭电oj 2034
/*集合的减法运算差:以属于A而不属于B的元素为元素的集合称为A与B的差(集)*/#include<stdio.h>void main(){int a[100],b[100],c[100];int n,m;int i,j;while(scanf("%d %d",&n,&m)!=EOF){if(m0&&n0)break;for(i=0;i<n;i++){scanf("%d",&a[i]);}for(j=0;j<原创 2021-03-12 10:23:54 · 221 阅读 · 0 评论 -
杭电oj 2033
/*输入数据有多行组成,首先是一个整数N,表示测试实例的个数,然后是N行数据,每行有6个整数AH,AM,AS,BH,BM,BS,分别表示时间A和B所对应的时分秒。题目保证所有的数据合法。*/#include<stdio.h>void main(){int n,i;int AH,AM,AS,BH,BM,BS;int h,m,s;while(scanf("%d",&n)!=EOF){for(i=0;i<2;i++){h=0;m=0;s=0;scanf原创 2021-03-11 11:31:41 · 358 阅读 · 0 评论 -
杭电oj 2032
/*杨辉三角输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。*/#include<stdio.h>int main(void){int a, b, i, j,k;int e[35][35];while (scanf("%d", &a) != EOF&&a >= 1 && a <= 30){e[0][0] = 1;e[0][1] = 0;prin原创 2021-03-11 11:12:30 · 115 阅读 · 0 评论 -
杭电oj 2031
#include <stdio.h>#include<math.h>int main() {int n,r;int z[10000];while (scanf("%d %d", &n,&r)!=EOF) {int i=0,num,z[10000]; //每输入两个数就要进行初始化for(num=abs(n);num!=0;i++) //取绝对值{ //将十进制数y转换为Q进制数转载 2021-03-10 10:54:50 · 163 阅读 · 0 评论 -
杭电oj 2030
/*统计给定文本文件中汉字的个数。*/#include<stdio.h>void main(){int n,i;char a[100];int count;scanf("%d",&n);getchar();while(n–){count=0;gets(a);for(i=0;a[i]!=’\0’;i++){if(a[i]<0)count++;}printf("%d\n",count/2);}}...原创 2021-03-10 09:47:56 · 110 阅读 · 0 评论 -
杭电oj 2029
/*“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。请写一个程序判断读入的字符串是否是“回文”。*/#include<stdio.h>#include<string.h>void main(){char a[10];int n,i,len;int flag;while(scanf("%d",&n)!=EOF){getchar();while(n–){gets(a);len=strlen(a);f原创 2021-03-10 09:25:49 · 112 阅读 · 0 评论 -
杭电oj 2028
/*求n个数的最小公倍数。*/#include<stdio.h>void main(){int n,min,i,m,a[100];while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++){scanf("%d",&a[i]);}min=a[0];//可以减去一次循环for(i=1;i<n;i++){for(m=min;;m++){if(m%a[i]0&&m%min0)break;//判断原创 2021-03-09 11:17:51 · 159 阅读 · 0 评论 -
杭电oj 2027
/*统计每个元音字母在字符串中出现的次数。输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串。*/#include<stdio.h>void main(){int n,i;char a[100];while(scanf("%d",&n)!=EOF){ getchar(); while(n--) { gets(a); int num1=0,num2=0,num3=0,num4=0,num5=0; for(i=0;a[i]原创 2021-03-09 09:33:44 · 281 阅读 · 0 评论 -
杭电oj 2026
/*输入一个英文句子,将每个单词的第一个字母改成大写字母。*/#include<stdio.h>void main(){char a[100];int i;while(gets(a)){for(i=0;a[i];i++){if(i0){a[i]=a[i]-32;}else{if(a[i]’ '){a[i+1]=a[i+1]-32;}}}puts(a);}}...原创 2021-03-09 09:03:17 · 132 阅读 · 0 评论 -
杭电oj 2025
/*对于输入的每个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”。对于每个测试实例输出一行字符串,输出的结果是插入字符串“(max)”后的结果,如果存在多个最大的字母,就在每一个最大字母后面都插入"(max)"。*/#include<stdio.h>#include<string.h>#include<math.h>void main(){char a[100];int i,len;char max;while(gets(a)原创 2021-03-08 11:16:27 · 162 阅读 · 0 评论 -
杭电oj 2024
#include <ctype.h>#include <stdio.h>int main(void){int n, d, i;char sym[64];scanf("%d%*c", &n);while (n--){ gets(sym); if (sym[0] != '_' && !isalpha(sym[0])) { puts("no"); continue; } for原创 2021-03-08 10:58:50 · 192 阅读 · 0 评论 -
杭电oj 2023
#include <stdio.h>int main() {int a,b;double c[51][6],d[6],f=0;int n,m,x;while(~scanf("%d%d",&a,&b)&&!(a0||b0)) {for(int i=0; i<a; i++) {for(int j=0; j<b; j++) {//输入数据scanf("%lf",&c[i][j]);}}x=0;//学生平均成绩for(int原创 2021-03-07 10:19:14 · 258 阅读 · 0 评论 -
杭电oj 2022
/*二维数组求最值问题对于每组输入数据,输出三个整数x,y和s,分别表示选中的MM的行号、列号和分数。note:行号和列号从一开始,如果有多个MM的分数绝对值一样,那么输出排在最前面的一个(即行号最小的那个,如果行号相同则取列号最小的那个)。*/#include<stdio.h>#include<math.h>void main(){int a[10][10];int x,y,s;int i,j;int m,n;while(scanf("%d %d",&am原创 2021-03-07 09:45:53 · 265 阅读 · 0 评论 -
杭电oj 2021
#include <stdio.h>int main(){int n,a,b;while(~scanf("%d",&n)&&n!=0){b=0;for(int i=0;i<n;i++){scanf("%d",&a);b+=a/100+(a%100)/50+((a%100)%50)/10+(((a%100)%50)%10)/5+((((a%100)%50)%10)%5)/2+(((((a%100)%50)%10)%5)%2)/1;}print转载 2021-03-07 09:15:31 · 489 阅读 · 0 评论 -
杭电oj 2020
/*输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。*/#include<stdio.h>#include <math.h>void main(){int n,temp;int i,j;int a[100];while(scanf("%d",&n)!=EOF){if(n==0原创 2021-03-05 09:53:39 · 285 阅读 · 1 评论 -
杭电oj 2019
/*有n(n<=100)个整数,已经按照从小到大顺序排列好,现在另外给一个整数x,请将该数插入到序列中,并使新的序列仍然有序。Input 输入数据包含多个测试实例,每组数据由两行组成,第一行是n和m,第二行是已经有序的n个数的数列。n和m同时为0标示输入数据的结束,本行不做处理。*/#include<stdio.h>void main(){int n,m,i,j,k;int a[100];while(scanf("%d %d",&n,&m)!=EOF原创 2021-03-05 09:25:53 · 250 阅读 · 1 评论 -
杭电oj 2018
/*有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?Input 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。n=0表示输入数据的结束,不做处理。*/#include<stdio.h>void main(){int n,i;int a[55];while(scanf("%d",&n)!=EOF){if(n==0)原创 2021-03-05 08:38:37 · 196 阅读 · 1 评论 -
杭电oj 2017
/*对于给定的一个字符串,统计其中数字字符出现的次数。输入数据有多行,第一行是一个整数n,表示测试实例的个数,后面跟着n行,每行包括一个由字母和数字组成的字符串。*/#include<stdio.h>void main(){int n,sum;char c[100];while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){sum=0;scanf("%s",c);for(int j=0;c[j]!=’\0’;j++原创 2021-03-04 10:34:54 · 459 阅读 · 1 评论 -
杭电oj 2016
/*输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。*/#include<stdio.h>void main(){int n,min,i,j;int a[100];while(scanf("%d",&n)!=EOF){for(i=0;i<n;i++){scanf("%d",&a[i]);}min=a[0];for(i=0;i<n;i++){if(a[i]<min){min=a[i];j=原创 2021-03-03 10:51:32 · 217 阅读 · 0 评论 -
杭电oj 2015
/*有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列*/#include <stdio.h>int main(void){int i, n, m, b, c;while (scanf("%d%d", &n, &m) != EOF){ b = 2; c = 0; for (i = 0 ; i <原创 2021-03-03 10:32:16 · 315 阅读 · 0 评论 -
杭电oj 2014
/*青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。*/#include<stdio.h>void main(){int n,i,j;int max,min;int a[100];double average,sum;while(scanf("%d",&n)!=EOF){sum=0;for(i=0;i<n;i++){scanf("%d",&a[i]);sum+=原创 2021-03-03 09:51:00 · 164 阅读 · 0 评论 -
杭电oj 2013
/*第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,到第n天准备吃的时候只剩下一个桃子。聪明的你,请帮悟空算一下,他第一天开始吃的时候桃子一共有多少个呢?*/#include<stdio.h>void main(){int n,sum,i;while(scanf("%d",&n)!=EOF){sum=1;for(i=1;i<n;i++){sum=(sum+1)*2;}printf("%d原创 2021-03-03 09:50:22 · 166 阅读 · 0 评论 -
航电oj 2012
/*对于表达式n^2+n+41,当n在(x,y)范围内取整数值时(包括x,y)(-39<=x<y<=50),判定该表达式的值是否都为素数。输入数据有多组,每组占一行,由两个整数x,y组成,当x=0,y=0时,表示输入结束,该行不做处理。/#include<stdio.h>void main(){int x,y,i,j;int sum,a;while(scanf("%d %d",&x,&y)!=EOF){if(x0&&y0)原创 2021-03-03 09:49:37 · 156 阅读 · 0 评论 -
航电oj 2011
/*多项式的描述如下:1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + …现在请你求出该多项式的前n项的和。输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<1000),求该多项式的前n项的和。*/#include<stdio.h>void main(){int m,n,i,j;double sum;while(scanf("%d",&m)!=EOF){原创 2021-03-03 09:49:09 · 161 阅读 · 0 评论 -
航电oj 2010
/*“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。现在要求输出所有在m和n范围内的水仙花数。输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。/#include<stdio.h>void main(){int m,n,i;int a,b,c;while(scanf("%d %d",&m,&n)!=EOF){if(m<100||n>1000){pr原创 2021-03-03 09:48:30 · 132 阅读 · 0 评论 -
杭电oj 2009
/*数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。*/#include<stdio.h>#include<math.h>void main(){int m,i;double sum,n;while(scanf("%lf %d",&n,&m)!=EOF){sum=0;for(i=0;i<m原创 2021-03-02 20:05:23 · 88 阅读 · 0 评论 -
杭电oj 2008
/*统计给定的n个数中,负数、零和正数的个数。输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。*/#include<stdio.h>void main(){int n,x,y,z,i;double t;while(scanf("%d",&n)!=EOF){if(n0)break;x=y=z=0;for(i=0;i<n;i++){sca原创 2021-03-02 20:04:48 · 414 阅读 · 0 评论 -
杭电oj 2007
/*给定一段连续的整数,求出他们中所有偶数的平方和以及所有奇数的立方和。输入数据包含多组测试实例,每组测试实例包含一行,由两个整数m和n组成。/#include<stdio.h>void main(){int m,n,i,x,y;while(scanf("%d %d",&m,&n)!=EOF){x=y=0;for(i=m;i<=n;i++){if(i%2==0){x=x+ii;}else{y=y+iii;}}printf("%d原创 2021-03-02 20:04:16 · 154 阅读 · 0 评论 -
杭电oj 2006
/*给你n个整数,求他们中所有奇数的乘积。输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。/#include<stdio.h>void main(){int n,s,i,t;while(scanf("%d",&n)!=EOF){s=1;for(i=0;i<n;i++){scanf("%d",&t);if(t%2!=0){s=st;}}原创 2021-03-02 20:03:36 · 146 阅读 · 0 评论 -
杭电oj 2005
//给定一个日期,输出这个日期是该年的第几天。#include<stdio.h>void main(){int i;int y,m,d;int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};while(scanf("%d/%d/%d",&y,&m,&d)!=EOF){int s=0;if((y%40&&y%100!=0)||y%4000){month[2]=29;}for(原创 2021-03-02 20:02:54 · 205 阅读 · 0 评论