- zouqize's blog
入门教程 关于多位数取位问题
- 2024-4-5 11:10:16 @
做题时,总能遇到一些要求你取出固定数位的题目 例如:
而许多萌新不知道这种题怎么做,今天我就教大家怎么做这种题
首先是题一
水仙花数是很经典的入门题目,它考的是对于 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 |
---|