/*
基礎練習 閏年判斷
問題描述
給定一個年份,判斷這一年是不是閏年。
當以下情況之一滿足時,這一年是閏年:
1. 年份是4的倍數而不是100的倍數;
2. 年份是400的倍數。
其他的年份都不是閏年。
輸入格式
輸入包含一個整數y,表示當前的年份。
輸出格式
輸出一行,如果給定的年份是閏年,則輸出yes,否則輸出no。
說明:當試題指定你輸出一個字符串作為結果(比如本題的yes或者no,你需要嚴格按照試題中給定的大小寫,寫錯大小寫將不得分。
樣例輸入
2013
樣例輸出
no
樣例輸入
2016
樣例輸出
yes
數據規模與約定
1990 <= y <= 2050。
*/
#include<stdio.h>
main()
{
int y;
scanf("%d",&y);
if(y%4==0&&y%100!=0||y%400==0)
printf("yes\n");
else
printf("no\n");
return 0;
}
/*
基礎練習 01字串
問題描述
對於長度為5位的一個01串,每一位都可能是0或1,一共有32種可能。它們的前幾個是:
00000
00001
00010
00011
00100
請按從小到大的順序輸出這32種01串。
輸入格式
本試題沒有輸入。
輸出格式
輸出32行,按從小到大的順序每行一個長度為5的01串。
樣例輸出
00000
00001
00010
00011
<以下部分省略>
*/
#include<stdio.h>
main()
{
int a,b,c,d,e;
for(e=0;e<=1;e++)
for(d=0;d<=1;d++)
for(c=0;c<=1;c++)
for(b=0;b<=1;b++)
for(a=0;a<=1;a++)
printf("%d%d%d%d%d\n",e,d,c,b,a);
return 0;
}
/*
基礎練習 字母圖形
問題描述
利用字母可以組成一些美麗的圖形,下面給出了一個例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
這是一個5行7列的圖形,請找出這個圖形的規律,並輸出一個n行m列的圖形。
輸入格式
輸入一行,包含兩個整數n和m,分別表示你要輸出的圖形的行數的列數。
輸出格式
輸出n行,每個m個字符,為你的圖形。
樣例輸入
5 7
樣例輸出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
數據規模與約定
1 <= n, m <= 26。
*/
#include <stdio.h>
#include <math.h>
main()
{
int n,m,j,k;
scanf("%d %d",&n,&m);
if(n>=1&&m<=26)
for(j=0;j<n;j++)
{
for(k=0;k<m;k++)
printf("%c",65+abs(j-k));
printf("\n");
}
return 0;
}
/*
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 26
//輸出
void Print(char matrix[MAXSIZE][MAXSIZE],int n,int m)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%c",matrix[i][j]);
}
printf("\n");
}
}
//實現字母圖形
void Drawing(int n,int m)
{
int i,j;
int point=0;
char str;
char matrix[MAXSIZE][MAXSIZE];
for(i=0;i<n;i++)
{
str='A';
for(j=i;j<m;j++)
{
matrix[i][j]=str++;
}
str='A';
for(j=i-1;j>=0;j--)
{
matrix[i][j]=++str;
}
}
Print(matrix,n,m);
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
Drawing(n,m);
return 0;
}
*/
/*
基礎練習 數列特征
問題描述
給出n個數,找出這n個數的最大值,最小值,和。
輸入格式
第一行為整數n,表示數的個數。
第二行有n個數,為給定的n個數,每個數的絕對值都小於10000。
輸出格式
輸出三行,每行一個整數。第一行表示這些數中的最大值,第二行表示這些數中的最小值,第三行表示這些數的和。
樣例輸入
5
1 3 -2 4 5
樣例輸出
5
-2
11
數據規模與約定
1 <= n <= 10000。
*/
#include <stdio.h>
#define MaxSize 10000
main()
{
int n;
int sum=0,min=MaxSize,max=-MaxSize;
scanf("%d",&n);
while(n--)
{
int temp,st;
scanf("%d",&temp);
if(temp>max)
{
max=temp;
}
if(temp<min)
{
min=temp;
}
sum+=temp;
}
printf("%d\n%d\n%d\n",max,min,sum);
return 0;
}
/*
基礎練習 查找整數
問題描述
給出一個包含n個整數的數列,問整數a在數列中的第一次出現是第幾個。
輸入格式
第一行包含一個整數n。
第二行包含n個非負整數,為給定的數列,數列中的每個數都不大於10000。
第三行包含一個整數a,為待查找的數。
輸出格式
如果a在數列中出現了,輸出它第一次出現的位置(位置從1開始編號),否則輸出-1。
樣例輸入
6
1 9 4 8 3 9
9
樣例輸出
2
數據規模與約定
1 <= n <= 1000。
*/
#include<stdio.h>
#define MaxSize 1000+5
main()
{
int n,i,a[MaxSize],s,m=0;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d ",&a[i]);
}
scanf("%d",&s);
for(i=0;i<n;i++)
{
if(s==a[i])
{
printf("%d\n",i+1);
return 0;
}
}
printf("-1\n");
return 0;
}
/*
基礎練習 楊輝三角形
問題描述
楊輝三角形又稱Pascal三角形,它的第i+1行是(a+b)i的展開式的系數。
它的一個重要性質是:三角形中的每個數字等於它兩肩上的數字相加。
下面給出了楊輝三角形的前4行:
1
1 1
1 2 1
1 3 3 1
給出n,輸出它的前n行。
輸入格式
輸入包含一個數n。
輸出格式
輸出楊輝三角形的前n行。每一行從這一行的第一個數開始依次輸出,中間使用一個空格分隔。請不要在前面輸出多余的空格。
樣例輸入
4
樣例輸出
1
1 1
1 2 1
1 3 3 1
數據規模與約定
1 <= n <= 34。
*/
#include<stdio.h>
main()
{
int n,x,y,a[35][35]={0};
int i,j;
scanf("%d",&n);
if(n>=1&&n<=34)
//賦值對角線元素為1
{
for(x=1;x<=n;x++)
{
a[x][1]=1;
a[x][x]=1;
}
//賦值其他元素
for(x=3;x<=n;x++)
for(y=2;y<=n;y++)
a[x][y]=a[x-1][y]+a[x-1][y-1];
//輸出對應元素
for(j=1,x=1;x<=n;x++)
{
for(y=1;y<=j;y++)
{
printf("%d ",a[x][y]);
}
j++;
printf("\n");
}
}
return 0;
}
/*
基礎練習 特殊的數字
問題描述
153是一個非常特殊的數,它等於它的每位數字的立方和,即153=1*1*1+5*5*5+3*3*3。編程求所有滿足這種條件的三位十進制數。
輸出格式
按從小到大的順序輸出滿足條件的三位十進制數,每個數占一行。
*/
#include<stdio.h>
main()
{
int i,j,k;
int n;
for(i=1;i<=9;i++)
for(j=0;j<=9;j++)
for(k=0;k<=9;k++)
{
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
printf("%d%d%d\n",i,j,k);
}
return 0;
}
/*
基礎練習 回文數
問題描述
1221是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的,編程求所有這樣的四位十進制數。
輸出格式
按從小到大的順序輸出滿足條件的四位十進制數。
*/
#include<stdio.h>
main()
{
int a,b,i;
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
{
printf("%d%d%d%d\n",a,b,b,a);
}
return 0;
}
/*
#include<stdio.h>
int main()
{
int a,b,c,d,i;
for(i=1000;i<=9999;i++)
{
a=i/1000;
b=i/100%10;
c=i/10%10;
d=i%10;
if(a==d&&b==c)
printf("%d\n",i);
}
return 0;
}
*/
/*
基礎練習 特殊回文數
問題描述
123321是一個非常特殊的數,它從左邊讀和從右邊讀是一樣的。
輸入一個正整數n, 編程求所有這樣的五位和六位十進制數,滿足各位數字之和等於n 。
輸入格式
輸入一行,包含一個正整數n。
輸出格式
按從小到大的順序輸出滿足條件的整數,每個整數占一行。
樣例輸入
52
樣例輸出
899998
989989
998899
數據規模和約定
1<=n<=54。
*/
#include<stdio.h>
main()
{
int n,a,b,c;
scanf("%d",&n);
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{
if(n==2*a+2*b+c)
printf("%d%d%d%d%d\n",a,b,c,b,a);
}
for(a=1;a<=9;a++)
for(b=0;b<=9;b++)
for(c=0;c<=9;c++)
{
if(n==2*a+2*b+2*c)
printf("%d%d%d%d%d%d\n",a,b,c,c,b,a);
}
return 0;
}
/*
#include<stdio.h>
int main()
{
int a,b,c,d,e,f,t,all;
scanf("%d",&t);
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
for(d=0;d<10;d++)
for(e=0;e<10;e++)
{
if(a==e)
if(b==d)
{
all=a+b+c+d+e;
if(all==t)
printf("%d\n",a*10000+b*1000+c*100+d*10+e);
}
}
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
for(d=0;d<10;d++)
for(e=0;e<10;e++)
for(f=0;f<10;f++)
{
if(a==f)
if(b==e)
if(c==d)
{
all=a+b+c+d+e+f;
if(all==t)
printf("%d\n",a*100000+b*10000+c*1000+d*100+e*10+f);
}
}
return 0;
}
*/
/*
基礎練習 十進制轉十六進制
問題描述
十六進制數是在程序設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16個符號,分別表示十進制數的0至15。十六進制的計數方法是滿16進1,所以十進制數16在十六進制中是10,而十進制的17在十六進制中是11,以此類推,十進制的30在十六進制中是1E。
給出一個非負整數,將它表示成十六進制的形式。
輸入格式
輸入包含一個非負整數a,表示要轉換的數。0<=a<=2147483647
輸出格式
輸出這個整數的16進制表示
樣例輸入
30
樣例輸出
1E
*/
#include<stdio.h>
main()
{
int a;
scanf("%d",&a);
if(0<=a&&a<=2147483647)
printf("%X",a);
return 0;
}
/*
#include <stdio.h>
#include <stdlib.h>
char data[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
//輸出
void Print(char *num,int n)
{
int i;
for(i=n-1;i>=0;i--) printf("%c",num[i]);
printf("\0");
printf("\n");
}
//將十六進制數轉換為十進制數
int Transform(char *num,long long value)
{
int n=0;
while(value>=16)
{
num[n++]=data[value%16];
value/=16;
}
num[n++]=data[value%16];
return n;
}
int main()
{
long long value;
char num[10];
int n;
scanf("%I64d",&value);
n=Transform(num,value);
Print(num,n);
return 0;
}
*/