zoukankan      html  css  js  c++  java
  • 蓝桥杯 简单加法(基本型)

    问题描述
      首先给出简单加法算式的定义:
      如果有一个算式(i)+(i+1)+(i+2),(i>=0),在计算的过程中,没有任何一个数位出现了进位,则称其为简单的加法算式。
      例如:i=3时,3+4+5=12,有一个进位,因此3+4+5不是一个简单的加法算式;又如i=112时,112+113+114=339,没有在任意数位上产生进位,故112+113+114是一个简单的加法算式。
      问题:给定一个正整数n,问当i大于等于0且小于n时,有多少个算式(i)+(i+1)+(i+2)是简单加法算式。其中n<10000。
    输入格式
      一个整数,表示n
    输出格式
      一个整数,表示简单加法算式的个数
    样例输入、
    4
    样例输出
    3

    看不懂题目啥意思系列- -

    题目的含义简单翻译一下就是:三个连续的数相加,要满足三个数对应个位,十位,百位,千位,每一位(如果有的话)上的三个数字相加小于等于9.

    比如112+113+114=339。

    个位:2+3+4=9,没有进位

    十位:1+1+1=3,没有进位

    百位:1+1+1=3,没有进位,符合题意。

    比如3+4+5=12就进位了,不符合题意。

    理解题意后就可以暴力枚举了,代码很好理解。

    转载自https://blog.csdn.net/qq_39671636/article/details/79187975

    注意当i = 132,i + 1 = 133, i + 2 = 134时也是满足的。

    132 + 133 + 134 = 399。每一位都没有进位。我做题时错在这了

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 bool check(int num) { 
     4     int num2 = num + 1;
     5     int num3 = num + 2; //三个数
     6     int sum; //存储相同数位上的和
     7     while (num3) { //因为num3是这三个数中数位最多的,比如98,99,100。当然98,99,100不满足题意
     8         sum = num % 10 + num2 % 10 + num3 % 10; //计算个位的和,再计算十位的和,等等等等
     9         if (sum >= 10) { //只要有一个数位上大于10了,就gg
    10             return false;
    11         }
    12         num /= 10;
    13         num2 /= 10;
    14         num3 /= 10; //三个数都/=10,数位降一位
    15     }
    16     return true; //能走到这,说明每一位上都没有进位
    17 }
    18 int main() {
    19     int n;
    20     cin >> n;
    21     int cnt = 0; //计数器
    22     for (int i = 0; i < n; i++) {
    23         if (check(i)) {
    24             cnt++;
    25         }
    26     }
    27     cout << cnt << endl;
    28     return 0;
    29 }
  • 相关阅读:
    AddParent
    AddChild
    贝塞尔曲线代码
    顶点纹理shader
    抽象方法与抽象类
    Application类
    布局组件
    C#单例和Unity单例
    Unity&UGUI
    Json解析
  • 原文地址:https://www.cnblogs.com/fx1998/p/12691491.html
Copyright © 2011-2022 走看看