Specialized Four-Digit Numbers/特殊四位数

一:杭电原题摘录

http://acm.hdu.edu.cn/game/entry/problem/show.php?chapterid=1&sectionid=2&problemid=24

杭电1.2.8

二.题目分析

进制转换.此题重点在于将一个十进制数转换为十二,十六进制.如果我们以前做过转二进制,那么一定记得辗转相除.也就好解决了.还有一个问题就是该数的范围,如果取错,很可能会出现超时问题.这个时候,就要善于观察输出结果.

三.我的收获

进制转换的辗转相除和取余

最后当然就是善于观察输入输出结果,特别是无输入的时候,这个时候输出结果就显得很重要了.

四.AC代码

#include <iostream> 
using namespace std; 

int main(int argc, char** argv)
{ 
	int n;
    for(n=2992;n<10000;n++)
    {
    	int sum1=0,sum2=0,sum3=0;
    	//cout<<"----"<<endl;
    	//十进制
    	sum1=(n/1000)+(n/100%10)+(n/10%10)+(n%10);     
		//cout<<"sum1:"<<sum1<<endl;	
		//16进制
		int b[4],j,m;
		m=n;		
    	for(j=0;j<4;j++){
    		b[j]=m%16;
    		m=m/16;
			if(m==0) {		
			break;}			
		}		
		for(j=0;j<4;j++){
		sum2+=b[j];		
		}	
		//cout<<"sum2:"<<sum2<<endl;				
		//十二进制 
    	int a[4],i,p;
    	p=n;
    	for(i=0;i<4;i++){
    		a[i]=p%12;
    		p=p/12;
			if(p==0) break;
		}				
		for(i=0;i<4;i++){
		sum3+=a[i];		
		}
		//cout<<"sum3:"<<sum3<<endl;	
		if(sum1==sum2&&sum2==sum3){
		cout<<n<<endl;	
		}
		
    }
    
    return 0; 
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值