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

来源:互联网 发布:淘宝美式家具品牌 编辑:程序博客网 时间:2024/06/05 20:57

题目地址

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

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

思路:

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

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

心得:

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

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

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

代码:

#include<iostream>#include<math.h>using namespace std;int main(){unsigned int w; // 10 < w < 1 000 000int 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>



0 0
原创粉丝点击