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
来源
- [rooot]原创 上传者
一开始自己一直想如何实现我输入一个数计算机就可以判断他是几位数,一开始没有思路,到讨论区找了一下,发现,有人用字符数组ac了,然后我也用字符数组,但是发现没有ac,而且代码量特别大,在讨论区里看到一位大神,我和他思路一样,但是他的代码量很小很小,他的代码如下:
#include <iostream> #include <stdlib.h> #include <cstring> using namespace std; int main() { char num[100]; int n,i; cin>>n; while(n--) { cin>>num; num[0]='0'; cout<<atoi(num)<<endl; } }
然而我的代码长,比较长,而且没有ac如下:
#include <iostream> #include<string.h> using namespace std; int main() { //我输入一个数,怎么知道这个数是几位呢? char s[2000]; int m; cin>>m; while(m--){ int len; cin>>s; len=strlen(s); for(int i=0;i<len;i++){ s[i]=s[i+1]; } //如果第二位及以后都为0,就输出0 for(int j=0;j<len;j++){ if(s[j]=='0'){ for(int i=0;i<len;i++){ s[i]=s[i+1]; } }else{ break; } } cout<<s<<endl; } }
-
第一行为M,表示测试数据组数。