n-1位数
时间限制:
3000
ms | 内存限制:
65535
KB
难度:
1
-
描述
-
已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。
-
输入
-
第一行为M,表示测试数据组数。
接下来M行,每行包含一个测试数据。
输出
- 输出M行,每行为对应行的n-1位数(忽略前缀0)。如果除了最高位外,其余位都为0,则输出0。 样例输入
-
4 1023 5923 923 1000
样例输出
-
23 923 23 0
-
第一行为M,表示测试数据组数。
思路:计算出所给数据的位数t,然后用输入的数对10^(t-1)进行取模操作。
#include <stdio.h>
#include <math.h>
int main()
{
int m;
scanf("%d",&m);
while (m--)
{
unsigned int i,r;
int t = 0;
scanf("%u",&i);
r = i;
while (r !=0 )
{
r /= 10;
t++;
}
printf("%d\n",i % (int)pow(10,t-1));
}
return 0;
}
来看最优代码
#include<cstdio>
int main()
{
int n,m;
scanf("%d",&n);
while(n--)
{
scanf("\n%*c%d",&m);
printf("%d\n",m);
}
}
百度了一下,scanf("\n")是吸收掉空格字符,包括回车,空格,制表符。。。
而对于控制符 %*c 表示跳过此数据不读入.,所以也能达到效果。
这题也是对scanf控制符的一种考察。