#include
void f(int n)
{
if(n % 4 == 0 && n % 100 != 0)
printf("yes\n");
else if(n % 400 == 0)
printf("yes\n");
else
printf("no\n");
}
int main()
{
int n;
scanf("%d", &n);
f(n);
return 0;
}
这题太简单,就不具体讲解了
这题看起来很简单,实质上还是有一点难度的,这里我提供两种解法
第一种方案,也是大多数人都能想到的,不难发现01字串的大小排列可以联想到二进制数,逢二进一,就是这样的本质
#include
int main()
{
int a, b, c, d, e;
for(a = 0; a < 2; a++)
for(b = 0; b < 2; b++)
for(c = 0; c < 2; c++)
for(d = 0; d < 2; d++)
for(e = 0; e < 2; e++)
printf("%d%d%d%d%d\n", a, b, c, d, e);
return 0;
}
第二种方案,比较难想出来,除非你经常做题
#include
int main()
{
int arr[5] = { 0 };
int k;
int n, j, i;
for(n = 0; n < 32; n++)
{
k = n;
for(i = 0; i < 5; i++)
{
if (k % 2)
arr[i] = 1;
else
arr[i] = 0;
k = k / 2;
}
for(j = 4; j >= 0; j--)
{
printf("%d", arr[j]);
}
printf("\n");
}
return 0;
}
经过观察,可以发现,A一直处于对角线上,而其他沿着A延伸的字母都是越来越大,它们都关于A这条对角线对称,随着行数的增加,同一列的元素也会慢慢变大,说明行与列的绝对值和元素所在位置的值有关。详细C代码如下:
#include
#include
int main()
{
int n, m, i, j;
scanf("%d %d", &n, &m);
char a[n][m];
for(i = 0; i < n; i++)
{
for(j = 0; j < m; j++)
{
printf("%c", 65 + abs(j - i));
}
printf("\n");
}
return 0;
}
#include
int n;
void f(int a[])
{
int i, j;
int tmp;
int k;
for(i = 0; i < n - 1; i++)
{
k = i;
for(j = i + 1; j < n; j++)
{
if(a[k] > a[j])
{
tmp = a[j];
a[j] = a[k];
a[k] = tmp;
}
}
}
}
int main()
{
scanf("%d", &n);
int a[n];
int i;
int sum = 0;
for(i = 0; i < n; i++)
{
scanf("%d", &a[i]);
sum += a[i];
}
f(a);
printf("%d\n%d\n%d\n", a[n - 1], a[0], sum);
return 0;
}
#include
int main()
{
int n;
scanf("%d", &n);
int a[n];
int i;
for(i = 0; i < n; i++)
scanf("%d", &a[i]);
int s;
scanf("%d", &s);
int cnt = 1;
for(i = 0; i < n; i++)
{
if(a[i] == s)
{
printf("%d\n", cnt);
return 0;
}
cnt++;
}
printf("-1\n");
return 0;
}
#include
int main()
{
int i, j;
int n;
scanf("%d", &n);
int a[n][n];
if(n == 1)
{
printf("1\n");
return 0;
}
else
{
a[0][0] = 1;
a[1][0] = 1;
a[1][1] = 1;
for(i = 2; i < n; i++)
{
for(j = 0; j <= i; j++)
{
if(j == 0 || j == i)
a[i][j] = 1;
else
{
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
}
}
}
}
for(i = 0; i < n; i++)
{
for(j = 0; j <= i; j++)
{
printf("%d ", a[i][j]);
}
printf("\n");
}
return 0;
}
#include
int main()
{
int i;
int h, d, b;
for(i = 100; i < 1000; i++)
{
h = i / 100;
d = i / 10 % 10;
b = i % 10;
if(i == h * h * h + d * d * d + b * b * b)
printf("%d\n", i);
}
return 0;
}
#include
int main()
{
int i;
for(i = 1001; i < 10000; i++)
{
int th, hu, de, bi;
th = i / 1000;
hu = i / 100 % 10;
de = i / 10 % 10;
bi = i % 10;
if(th == bi)
if(hu == de)
printf("%d\n", i);
}
return 0;
}
#include
int main()
{
int n;
scanf("%d", &n);
int i, j, k;
for(i = 1; i < 10; i++) //先求五位数外层数字
{
for(j = 0; j < 10; j++) //遍历第二层数字
{
for(k = 0; k < 10; k++) //遍历内层数字
{
int num = 0; //正整数
int cnt = 0; //各位之和
cnt = 2 * i + 2 * j + k;
num = i * 10000 + i + j * 1000 + j * 10 + k * 100;
if(cnt == n)
printf("%d\n", num);
}
}
}
for(i = 1; i < 10; i++)
{
for(j = 0; j < 10; j++)
{
for(k = 0; k < 10; k++)
{
int num = 0;
int cnt = 0;
cnt = 2 * (i + j + k);
num = i * 100000 + i + j * 10000 + j * 10 + k * 1000 + k * 100;
if(cnt == n)
printf("%d\n", num);
}
}
}
return 0;
}