@Author:Pakzat
QQ:3369308571
逐个拆分算法思想
逐个拆分就是把某个数字拆分出来
比如把1234拆分成
4>>>3>>>2>>>1
主要方法是取模n%10
例如
while(t!=0){
k=t%10;
t=t/10;
先把t%10取模出来个位,比如1234%10就得了4,然后再把t定义,把他整个除10,去掉个位,就变成了123。因为设了条件t!=0,所以只要t不等于0,就会无限进行下去,直到t=0;
实战
这是一个计数问题,要把1~n里的所有x求出来,这有一个踩坑点,比如11有两个1,有些时候会把别的1省略掉
定义变量:题目给出了n和x,但是因为需要计数x出现个数,所以额外定义一个变量a,而且还需要初始化a
int n,x,a=0;
现在写一个for循环,因为给的范围是1~n,所以i的初始值为0;条件为<=
for (int i=1;i<=n;i++){
}
解决此题需要逐个拆分,需要再定义两个变量
int t,k;
现在把我们在上边讲的逐个拆分代码拉下来
写个if条件语句,如果k==x,就给a+1
for (int i=1;i<=n;i++){
int t=i,k;
while(t!=0){
k=t%10;
t=t/10;
if (k==x){
a++;
}
}
}
完整代码如下
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,x,a=0;
cin>>n>>x;
for (int i=1;i<=n;i++){
int t=i,k;
while(t!=0){
k=t%10;
t=t/10;
if (k==x){
a++;
}
}
}
cout<<a;
return 0;
}
提交上去