本文主要是介绍NYOJ_96 n-1位数 (输出一个除去最高位的数字),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目地址
今天这题本来以为很简单的,却花了近一个半小时。
当遇到错误的时候,试试一步一步输出结果调试。
思路:
计算一下最高位的权值,和最高位的值,两者相乘。
原来的数与相乘的结果做差即可。
心得:
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>
这篇关于NYOJ_96 n-1位数 (输出一个除去最高位的数字)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!