做题时,总能遇到一些要求你取出固定数位的题目 例如:

image image

而许多萌新不知道这种题怎么做,今天我就教大家怎么做这种题


首先是题一

水仙花数是很经典的入门题目,它考的是对于 pow(a,b) 函数的应用以及对数位拆分的应用。这道题是固定的数,可以用多个变量或是数组对每一位进行保存,也可以用字符串大法。今天只讲第一种,运用“/”“%”两个运算符做到取位效果。代码如下>

int main(){
  for(int i = 100 ; i <= 999 ; i++){
    int hun , ten , one;
    hun = i / 100;
    ten = i % 100 / 10;
    one = i % 10;
    if(hun + ten + one == i)
      cout << i << endl;
  return 0;
}
本博客为蒸蛋樱桃(邹骐泽)原创,无抄袭成分。
如有雷同,纯属巧合

那么解决了固定位数,还有不固定位数呢?


再看看题二

题二要求取出每一位,而且数字位数是不固定的。这时候也有两种方法:取个位法和字符串大发。还是只讲第一种,利用while循环以及“%”取个位的特性来做这道题。代码如下:

int main(){
    int n;
    cin >> n;
    int sum = 0;
    for(int i = 1 ;i <= n ; i++){
        bool flag = true;
        int num = i;
        if(num % 7 == 0) continue;
        while(num){
            if(num % 10 == 7){
                flag = false;
                break;
            }
            num /= 10;
        }
        if(flag) sum += pow(i,2);
    }
    cout << sum;
    return 0;
}
本博客为蒸蛋樱桃(邹骐泽)原创,无抄袭成分。
如有雷同,纯属巧合

注释

"%"为取余,取出a除以b的余数 如:

11 % 10 = 1

"/"就是正常的除以,与数学中的"÷"一样 但整形的“/”不会保留小数,只会向下取整,如:

11 / 10 = 1

pow函数使用时要导入<math.h>或是< cmath>,如:

#include<c.math>
#include<math.h>
//只导入math库

#include<bits/stdc++.h>
//导入所有自带的库

以上就是全部内容了,希望大家可以多多学习

我的主页:

蒸蛋樱桃zqz(邹骐泽) (zouqize) LV 9