HDU 2549 壮志难酬(字符串,处理小数点)
/* 给你一个小数x,让你算出小数点后第n位是什么,(1 <= n <= 6) Input 首先输入一个t,表示有t组数据,跟着t行: 每行输入一个小数(输入数据保证一定是a.b的形式,为了简单化问题,没有循环小数的情况) 然后跟一个n,表示小数点后第几位 Output 输出一个数表示小数点后第n位的数 */ #include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> using namespace std; int main() { int t; char a[105]; int n; scanf("%d",&t); while(t--) { scanf("%s%d",a,&n); int len=strlen(a); for(int i=0;i<len;i++) { if(a[i]=='.') break; //!!找到小数点所在下标i的位置 } if(n>len-i-1) //!!得到减去小数点及小数点之前数后得到的长度 并判断是否超长 printf("0\n"); else printf("%c\n",a[n+i]);//!! } return 0; }