码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-08-18 21:25:28      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:编程   c++   nyoj   

题目地址

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

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

思路:

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

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

心得:

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位数 (输出一个除去最高位的数字)

标签:编程   c++   nyoj   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!