目录
一.[蓝桥杯 2013 省 AB] 错误票据
代码如下:
代码如下:
#include <stdio.h>
int main()
{
int n = 0, i = 0, j = 0;
int g[10005];
scanf("%d", &n);
while (scanf("%d", &g[i]) != EOF)
{
i++;
}
int len = i;
//冒泡排序
for (i = 0; i < len - 1; i++)
{
for (j = i + 1; j < len; j++)
{
if (g[i] > g[j])
{
int t = g[i];
g[i] = g[j];
g[j] = t;
}
}
}
int ans1 = 0, ans2 = 0;
for (i = 0; i < len; i++)
{
if (g[i + 1] - g[i] == 2)
ans1 = g[i] + 1;
if (g[i] == g[i + 1])
ans2 = g[i];
}
printf("%d %d", ans1, ans2);
return 0;
}
虽然是二维数组,但是可以看成一维,
题解中冒泡排序是解答关键!!!!!!
二.[蓝桥杯 2024 省 Java B] 报数游戏
代码如下:
int gcd(int a, int b)
{
long long temp;
long long temp1;
long long n ;
while (b != 0)
{
n = a % b;
temp = a;
a = b;
b = temp;
temp1 = b;
b = n;
n = temp1;
}
return a;
}
int main()
{
long long n = 0;
n = 20*24/gcd(20, 24);
long long m = 202420242024 / 10*n;
long long i = 0;
while (i<5)
{
if (m % 20 == 0 || m % 24 == 0)
{
i++;
}
m ++;
}
m--;
printf("%lld", m);
return 0;
}
讲解:
先通过gcd函数(辗转相除法)求出最大公约数,再利用公式a * b / gcd(a, b)求出最小公倍数,20 和 24 的最小公倍数是 120。
这意味着每 120 个数里,是 20 或 24 倍数的数有一定规律且数量是固定的。在区间[1, 120]内,是 20 倍数的数有120 / 20 = 6个(分别是 20、40、60、80、100、120),是 24 倍数的数有120 / 24 = 5个(分别是 24、48