ACM:蓝桥杯:n-1位数

时间:2023-01-08 15:59:00

描述
已知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

#include<iostream>
#include<cmath>
using namespace std;
int fun(int x)
{
int k=0,m,sum=0;
m=x;
while(m)
{
m=m/10;
k++;
}
int n=pow(10,k-1);
return x%n;
}
int main()
{
int x;
cin>>x;
while(x--)
{
int y;
cin>>y;
cout<<fun(y)<<endl;
}
}

最优代码:

#include<cstdio>
int main()
{
int n,m;
scanf("%d",&n);
while(n--)
{
scanf("\n%*c%d",&m);
printf("%d\n",m);
}
}

“*”符:用以表示该输入项,读入后不赋予相应的变量,即跳过该输入值。
如:
scanf(“%d %*d %d”,&a,&b);
当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。

%*c作用时读取输入流中数字后的一个字符,并丢弃,使得后面的输入函数不能读到那个字符

#include "stdio.h"
int main()
{
int a, b;
scanf("%d%*c%d", &a, &b);
printf("%d%d\n", a, b);
return 0;
}

输入:1n2
结果:12
输入:123n4
结果:1234


‘#include "stdio.h"
int main()
{
int a, b;
scanf("%d%*d%d", &a, &b);
printf("%d%d\n", a, b);
return 0;
}

输入:12 3 4
结果:124