2549 壮志难酬 - HDOJ

2549 壮志难酬

Problem Description

问题是这样的:给你一个小数x,让你算出小数点后第n位是什么,(1 <= n <= 6)

Input

首先输入一个t,表示有t组数据,跟着t行:
每行输入一个小数(输入数据保证一定是a.b的形式,为了简单化问题,没有循环小数的情况)
然后跟一个n,表示小数点后第几位

Output

输出一个数表示小数点后第n位的数

Sample Input

3
1.234 1
2.345 2
3.456 3

Sample Output

2
4
6

Solution:

坑点:
n的范围在[1,6]闭区间内, 如果小数点不满6位的话, 应该输出0

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;

int main() {
int T, d; string s;
cin >> T;
while (T--) {
cin >> s >> d;
int pos = s.find('.');
// int len = s.length(); // 不要通过长度来判断小数后是否有6位
// if (len < 8) { // 比较麻烦
// for (int i = 0; i < 8 - len; i++) {
// s += '0';
// }
// }
s += "000000"; // 直接添6位就好

printf("%c\n", s[pos+d]);
}
return 0;
}