1、既约分数:最关键的就是判断两个数有没有除了一以外的公约数,这里可以看两个数的最大公约数是不是1,如果是,则sum++就好了。
#include <stdio.h>
#include <stdlib.h>
int yueshu(int a,int b)
{
int i=a%b;//余数
while(i!=0)
{
a=b;//更新被除数
b=i;//更新除数
i=a%b;//更新余数
}
return b;//最后的除数即为最大因数
}
int main(int argc, char *argv[])
{
// 请在此输入您的代码
int i,j,sum=0;
for(i=1;i<=2020;i++)
for(j=1;j<=2020;j++)
{
if(yueshu(i,j)==1)
sum++;
}
printf("%d",sum);
return 0;
}
2、杨辉三角:要是按常规的思想,先把杨辉三角的值弄出来,再用暴力算法找到数字,这样只能得30分,这里要用到二分法,才能得到满分,这里我就不展示了。
直接看两位大佬的解释吧!绝了
用暴力算法得40分的代码:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// 请在此输入您的代码
int i,j,sum=0;
int a[1000][1000];
for(i=0;i<1000;i++)
{
a[i][0]=1;
for(j=0;j<=i;j++)
{
if(i==j)
{
a[i][j]=1;
}
if(i!=j)
a[i][j]=a[i-1][j-1]+a[i-1][j];
// printf("%d ",a[i][j]);
}
}
long int n;
scanf("%ld",&n);
for(i=0;i<=1000;i++)
for(j=0;j<=i;j++)
{
sum++;
if(a[i][j]==n)
{
printf("%d",sum);
return 0;
}
}
}
第十二届蓝桥杯B组C/C++省赛—H题(杨辉三角)_思维题_萌小帝的博客-优快云博客
求杨辉三角中元素首次出现位置【2021蓝桥杯】_LMoon琉月的博客-优快云博客_杨辉三角形某个数第一次出现
3、时间显示:这道题的意思就是输入一个整数,然后是多少这个数的单位是毫秒,所以就可以从毫秒算,因为不用输出毫秒,则化成秒除1000(1s=1000ms),再分别求出秒,分,时。再注意输出格式。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
long long n;
scanf("%lld",&n);
n/=1000;
int ss=n%60;
n/=60;
int mm=n%60;
n/=60;
int hh=n%24;
printf("%02d:%02d:%02d",hh,mm,ss);
// 请在此输入您的代码
return 0;
}
博客介绍了蓝桥杯竞赛中的三道算法题目:1.通过计算最大公约数判断既约分数并统计数量;2.使用二分法解决杨辉三角中特定数值首次出现的位置;3.将毫秒时间转换为标准时间格式。提供了相关代码示例和解题思路。

被折叠的 条评论
为什么被折叠?



