C语言蓝桥杯每日一题—— 既约分数

Posted 博客小梦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言蓝桥杯每日一题—— 既约分数相关的知识,希望对你有一定的参考价值。

【C语言蓝桥杯每日一题】—— 既约分数😎


既约分数😎)

   
😎博客昵称:博客小梦
😊最喜欢的座右铭:全神贯注的上吧!!!
😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘

前言🙌

    哈喽各位友友们😊,我今天又学到了很多有趣的知识现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C语言蓝桥杯每日一题】—— 既约分数~ 都是精华内容,可不要错过哟!!!😍😍😍

既约分数🙌

解题思路分析: 😍

  • 这道题其实考察的是求最大公约数的问题,这道题偶然比较简单,但是你经常刷题的时候会发现,很多题都是基于一些基础然后延伸出来的。今天刚好遇到这道题,也当复习一下。
  • 这里主要用到的是辗转相除法来求最大公约数。之前我也写了一篇关于求最小公倍数几种方法的博客,利用 最大公约数 乘以 最小公倍数 = 两个数 的乘积的关系,知道一个就可以求得另外一个。大家可以点击阅读一下。博客链接: 你是真的“C”——求两个正数最小公倍数的3种境界~

递归版解题代码:😍

#include <stdio.h>
#include <stdlib.h>

int f(int i,int j) 

  if(i % j == 0)
  return j;
  else
  return f(j,i % j);


int main(int argc, char *argv[])

  int i = 0;
  int j = 0;
  int sum = 0;
  for (i = 1; i <= 2020; i++)
  
    for (j = 1; j <= 2020; j++)
    
      if(f(i,j) == 1)
      sum++;
    
  
  printf("%d",sum);
  return 0;

非递归版解题代码:😍

#include <stdio.h>
#include <stdlib.h>

int f(int i,int j) 

  int t = 0;
  while(j != 0)
  
    t = i % j;
    i = j;
    j = t;
  


int main(int argc, char *argv[])

  int i = 0;
  int j = 0;
  int sum = 0;
  for (i = 1; i <= 2020; i++)
  
    for (j = 1; j <= 2020; j++)
    
      if(f(i,j) == 1)
      sum++;
    
  
  printf("%d",sum);
  return 0;

程序输出结果验证: 😊

总结撒花💞

   本篇文章旨在分享【C语言蓝桥杯每日一题】—— 既约分数。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

蓝桥杯C/C++语言每日一题特殊数的和

小明对数位中含有 2、0、1、9的数字很感兴趣(不包括前导0),在1到40中这样的数包括1、2、9、10至32、39和40,共28个,他们的和是574。请问,在1到n中,所有这样的数的和是多少?

输入格式

共一行,包含一个整数n。

输出格式

共一行,包含一个整数,表示满足条件的数的和。

数据范围

1 n 10000

输入样例:

40

输出样例:

574

代码

#include<stdio.h>
int n;int sum;
int main() { printf("请输入n :"); scanf("%d",&n); for (int i = 1; i <= n; i++) { int tap = i; while (tap) {            int t = tap % 10;//求出个位 if (t == 0 || t == 1 || t == 2 || t == 9) { sum += i; break;            }            tap /= 10;//依次循环,第一次为十位,然后百位,依次类推。            //表示依次找出各个位置上是否含有0,1,2,9即可。 } } printf("%d\n",sum); return 0;}

结果:





以上是关于C语言蓝桥杯每日一题—— 既约分数的主要内容,如果未能解决你的问题,请参考以下文章

C语言蓝桥杯每日一题—— 单词分析

# 2020年第十一届蓝桥杯C/C++ B组第二场省赛真题

每日一练蓝桥杯C语言:暴力枚举

C语言蓝桥杯的题目,求帮助

算法笔记_204:第四届蓝桥杯软件类决赛真题(Java语言C组)

蓝桥杯——2020第十一届C/C++真题[省赛][B组]