当前位置: 首页 > article >正文

蓝桥刷题note11(好数)

1,好数

一个整数如果按从低位到高位的顺序,奇数位 (个位、百位、万位 ⋯⋯ ) 上的数字是奇数,偶数位 (十位、千位、十万位 ⋯⋯ ) 上的数字是偶数,我们就称之为 “好数”。

给定一个正整数 NN,请计算从 1 到 NN 一共有多少个好数。

法一:用position作为索引,用来表示当前位为偶数位还是奇数位。

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

_Bool isgoodnum(int x){
  int position=1;
  if(x==0){
    return 0;
  }
  while(x>0){
  int digit=x%10;
  if(position%2==1){
    if(digit%2!=1){
      return 0;
    }
  }else{
    if(digit%2!=0){
      return 0;
    }
   }
   x/=10;
   position++;
  }
  return 1;
}

int main(int argc, char *argv[])
{
  // 请在此输入您的代码
  int n=0,ans=0;
  scanf("%d",&n);
  for(int i=0;i<=n;i++){
    if(isgoodnum(i)){
      ans++;
    }
  }
  printf("%d",ans);
  return 0;
}

法二:利用一个数为偶数(奇数)则个位数一定为偶数(奇数)的性质 ,可以不用单独获取             每一位数,只需要每次去除末位数即可。

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

_Bool isgoodnum(int x){
  if(x==0){
    return 0;
  }
  while(x>0){
    if(x%2!=1){
      return 0;
    }else{
      x/=10;
      if(x%2!=0){
        return 0;
      }else{
        x/=10;
      }
    }
  }
  return 1;
}

int main(int argc, char *argv[])
{
  // 请在此输入您的代码
  int n=0,ans=0;
  scanf("%d",&n);
  for(int i=0;i<=n;i++){
    if(isgoodnum(i)){
      ans++;
    }
  }
  printf("%d",ans);
  return 0;
}

注:0需要被排除在外,因为它仅有一位数且为偶数。 


http://www.kler.cn/a/614234.html

相关文章:

  • 嵌入式开发技术总结报告
  • 向量数据库学习笔记(2) —— pgvector 用法 与 最佳实践
  • YOLO基础知识
  • 金融市场中的时间序列预测:思考与方法
  • 【商城实战(102)】破局与进阶:商城系统的未来进化之路
  • hbuilderx打包iOS上传苹果商店的最简流程
  • 【Linux系统】—— 进程状态
  • LLaMA-Factory微调实操记录
  • 12款星光闪光污迹艺术绘画效果Clip Studio Paint笔刷画笔+闪光纹理图片 Clip Studio Glitter Texture Brushes
  • Linux中安装宝塔面板
  • 雨云云应用测评!内测持续进行中!
  • 全新版租赁商城小程序源码系统 源码开源支持二开+图文搭建教程
  • 人工智能之数学基础:实对称矩阵
  • Java项目实现幂等性方案总结
  • MOSN(Modular Open Smart Network)-03-流量劫持
  • LLMs Multi-agent 概述
  • SQL Server数据库引擎服务启动失败:端口冲突
  • 【Spring Boot 与 Spring Cloud 深度 Mape 之一】剖析 Spring Boot 核心:从快速构建到自动配置原理与实战
  • 7.3 主成分分析(PCA)
  • 3. 第三放平台部署deepseek