c++入门基础 数字拆分

拆数—过河拆桥式玩法

1、拆数的精髓是将一个整数拆成每一位上的数独立存在。

2、拆数的工具 % 和 /。

3、拆数的必备条件是 拆不完不让走!

4、拆数的注意事项:如果在循环内,记得找个替身。

5、拆数的意义:无意义!拆数可以用于做回文数,做数字中的关键字统计或查看。

6、拆数的详细过程如下图。

举例说明:

1、输入一个数,将该数上各个位上的数相加。

输入样例:123

输出样例:6

#include<bits/stdc++.h>
using namespace std;
int main(){

	int n,sum=0;//记得初始化sum 
	cin>>n;
	while(n!=0){//没被拆完不让走 
		sum+=n%10;
		n/=10; 
	}
	cout<<sum<<endl; 
	return 0;
}

2、输入一个数n,输出n中有多少个x(0<=x<=9)。

输入样例:11 1

输出样例:2

#include<bits/stdc++.h>
using namespace std;
int main(){

	int n,x,cnt=0;//记得初始化cnt 
	cin>>n>>x;
	while(n!=0){//没被拆完不让走 
		if(n%10==x) {//判定拆出的数 是否是x 
			cnt++;
		} 
		n/=10; //刽子手从来都不缺席 
	}
	cout<<cnt<<endl; 
	return 0;
}

3、输入一个数n,输出1到n之间有多少个x(0<=x<=9)。

输入样例:11 1

输出样例:4

#include<bits/stdc++.h>
using namespace std;
int main() {

	int n,x,t,cnt=0;//记得初始化cnt
	cin>>n>>x;
	for(int i=1; i<=n; i++) {
		t=i;//找替身,否则进入while循环 i出来永远是0,则for循环就成了死循环了 
		while(t!=0) { //没被拆完不让走
			if(t%10==x) {//判定拆出的数 是否是x
				cnt++;
			}
			t/=10; //刽子手从来都不缺席
		}
	}
	cout<<cnt<<endl;
	return 0;
}

4、输入两个数l、r,求从l到r之间有多少个x(0<=x<=9)。

输入样例:2 22 2

输出样例:6

#include<bits/stdc++.h>
using namespace std;
int main() {

	int a,b,x,t,cnt=0;//记得初始化cnt
	cin>>a>>b>>x;
	for(int i=a; i<=b; i++) {
		t=i;//找替身,否则进入while循环 i出来永远是0,则for循环就成了死循环了 
		while(t!=0) { //没被拆完不让走
			if(t%10==x) {//判定拆出的数 是否是x
				cnt++;
			}
			t/=10; //刽子手从来都不缺席
		}
	}
	cout<<cnt<<endl;
	return 0;
}

5、输入两个数l、r,求从l到r之间,0 至9共出现了多少次。

输入样例:1 11

输出样例:1 4 1 1 1 1 1 1 1 1

#include<bits/stdc++.h>
using namespace std;
int main() {

	int a,b,x,t,cnt=0;//记得初始化cnt
	int arr[11]={0};//初始化数组 
	cin>>a>>b;
	for(int i=a; i<=b; i++) {
		t=i;//找替身,否则进入while循环 i出来永远是0,则for循环就成了死循环了 
		while(t!=0) { //没被拆完不让走
			arr[t%10]++;//类属于捅排的玩法 
			t/=10; //刽子手从来都不缺席
		}
	}
	for(int i=0;i<10;i++){
		cout<<arr[i]<<" ";
	} 
	return 0;
}

拆数模块到这就差不多结束了,若关于本节中的取余,循环等知识点不懂,我稍后会补充扩展知识,然后放上链接。

谢谢大家,若有不足,欢迎批评指正,若需要补充,可私信我,谢谢!

  • 12
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值