首页 > 其他 > 详细

NYOJ_96 n-1位数 (输出一个除去最高位的数字)

时间:2015-08-18 21:24:03      阅读:372      评论:0      收藏:0      [点我收藏+]

题目地址

今天这题本来以为很简单的,却花了近一个半小时。

当遇到错误的时候,试试一步一步输出结果调试。

思路:

计算一下最高位的权值,和最高位的值,两者相乘。

原来的数与相乘的结果做差即可。

心得:

C,C++在类型转换的时候会损失一部分精度。

所以,在转换的时候,不妨先用double保存。

最后输出的时候再转化成int,减小精度的损失。

代码:

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
	unsigned int w; // 10 < w < 1 000 000
	int a;
	cin>>a;
	while(a--)
	{
		cin>>w;
		for(int i=5;i>0;i--)
			if( w / pow(10,i)  >=1 )     //20456 
			{
			 //	 cout<<pow(10,i)<<endl; //计算单位 10000  	
			//	cout<< w/pow(10,i)<<endl;     // 20456 2*10000
			//	cout<<floor( w/pow(10,i))<<endl;
				double num = floor( w/pow(10,i)) *  ( pow(10,i) );
				cout<<  w -num <<endl;
				break;
			}
	}
	return 0;
}    <strong>
 </strong>



版权声明:本文为博主原创文章,未经博主允许不得转载。

NYOJ_96 n-1位数 (输出一个除去最高位的数字)

原文:http://blog.csdn.net/think_ycx/article/details/47758643

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!