题目描述
小明一直很讨厌小数点,一看到小数点就头疼。不幸的是,小红给他出了一个题目,问他:
给你一个小数x,你能算出小数点后第n位是什么吗?(1<=n<=6)
小明看到此题后,瞬间头疼晕倒,你能帮帮他吗?
给你一个小数x,你能算出小数点后第n位是什么吗?(1<=n<=6)
小明看到此题后,瞬间头疼晕倒,你能帮帮他吗?
输入描述
首先输入一个t,表示有t组数据,跟着t行:
每行输入一个小数(输入数据保证一定是a.b的形式,为了简单化问题,没有循环小数的情况),
然后跟一个n,表示小数点后第几位。
每行输入一个小数(输入数据保证一定是a.b的形式,为了简单化问题,没有循环小数的情况),
然后跟一个n,表示小数点后第几位。
输出描述
输出一个数表示小数点后第n位的数。
输入样例
3
1.234 1
2.345 2
3.456 3
输出样例
2 46
分析:如果直接把小数扩大1e6倍,会有精度损失,例如0.234*1e6=239999,所以用字符串输入该小数,注意输出0的情况即可
AC代码如下:
#include <iostream> #include <cstdio> #include <string> #include <cstring> using namespace std; int main() { int t,n,i; double d; char str[10000]; cin>>t; while(t--) { scanf("%s %d",str,&n); for(i=0; i<strlen(str); i++) { if(str[i]=='.') { if((i+n)<strlen(str)) cout<<str[i+n]<<endl; else cout<<0<<endl; break; } } } return 0; }