今天这题本来以为很简单的,却花了近一个半小时。
当遇到错误的时候,试试一步一步输出结果调试。
思路:
计算一下最高位的权值,和最高位的值,两者相乘。
原来的数与相乘的结果做差即可。
心得:
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>
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/think_ycx/article/details/47758643