洛谷B3841 自幂数判断 题解

本文介绍了如何使用C++解决洛谷平台上的问题B3841,主要涉及自幂数的判断,通过幂运算函数和数字位数处理函数实现。
摘要由CSDN通过智能技术生成

#题外话 (第15篇题解)(本题为普及-难度)

#先看题目

题目链接icon-default.png?t=N7T8https://www.luogu.com.cn/problem/B3841 #思路

看代码上的注释吧……(来自手残党的哀嚎)

#代码

#include <iostream>//这题没涉及太多预设函数,用iostream就行
using namespace std;
int po(int arg0,int arg1){//幂运算函数,0为底数,1为指数(不知道为啥我用原版^总是返回错误……)
	int cnt=1;//出气筒
	for(int index=0;index<arg1;index++)cnt*=arg0;//按照幂运算的原理,循环乘
	return cnt;
}
int dig(int num){//不是挖,是判断数位的函数
	int ret=0;//提前定义返回值
	while(num!=0){ret++;num/=10;}//如果该数还不到0,就揍掉它一位数,并让ret++
	return ret;
}
bool spn(int n){//主判断函数
	int d=dig(n),sum=0,number=n;//sum用于累加,number用作出气筒,d只是为了代码简洁
	while(number!=0){
		sum+=po((number%10),d);
		number/=10;
	}//一样的套路,只不过这次不记录了,直接上去就淦
	if(sum==n)return 1;//如果所得和与原数相同,那么该数为自幂数,否则不是。
	else return 0;
}
int main(){
    int m,x;//m懂得都懂,x是每一个被判断的数
    cin>>m;
    for(int i=0;i<m;i++){
		cin>>x;
		if(spn(x))cout<<"T"<<endl;//spn用的是bool类型返回值,所以直接if它就行
		else cout<<"F"<<endl;
	}
    return 0;
}//洛谷B3841-自幂数

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值