【题述】
Description
Michael要给自己的一本已经完成的书编上页码。众所周知,第一页页码是1,第二页页码是2,第三页页码是 3,……。而Michael敲一次键盘就能打出一个数字,例如打出1需要敲一次键盘,打出10需要敲两次键盘。页码编完之后,Michael记得自己总共敲了 n次键盘,问Michael的书有多少页。
Input
输入的第一行是整数T(0 < T <= 100),表示测试数据的组数。每一组测试数据只有一行,只有一个整数n(1 <= n <= 1000),表示Michael敲了n次键盘。该行没有其它多余的符号。
Output
如果有解,则输出书的页数。如果无解,输出-1。
Sample Input
3
4
10
11
Sample Output
4
-1
10
扫描二维码关注公众号,回复: 2584737 查看本文章
#include <stdio.h>
int main(){
int t,i,a;
double res;
scanf("%d",&t);
for(i=0;i<t;i++){
res=0;
scanf("%d",&a);
if(a<=9){
res=a;
if(res-(int)res>0)
res=-1;
printf("%0.lf\n",res);
}
else if(a>9&&a<=90*2+9){
res=(a-9)/2.0+9;
if(res-(int)res>0)
res=-1;
printf("%0.lf\n",res);
}
else if(a>90*2+9&&a<=1000){
res=(a-9-90*2)/3.0+99;
if(res-(int)res>0)
res=-1;
printf("%0.lf\n",res);
}
}
return 0;
}