1006 换个格式输出整数 (15 point(s))
// Time Limit Exceeded 13分
#include <bits/stdc++.h>
using namespace std;
int main(){
int a[3];
string str;
cin >> str;
// 记录有多少位
int byte = str.size();
for(int i = 0; i < byte; i++)
a[i] = str[i] - '0';
for(auto ai : a){
int j = 1;
while(ai--){
if(byte == 3)cout << 'B';
if(byte == 2)cout << 'S';
if(byte == 1)cout << j++;
}
// 指向下一位
byte--;
}
}
// 15分
#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
for(int i = 0; i < n / 100; i++) cout << 'B';
for(int i = 0; i < n / 10 % 10; i++) cout << 'S';
for(int i = 1; i <= n % 10; i++) cout << i;
}
当时看到三位数,以为只有三位数,但别人前面还有 “不超过” 所以还要考虑一位或者二位数的情况。
但这个审题错得不大,关键是上面这个卡一个测试点的代码的原因居然是 Time Limit Exceeded 超时。。 我想不通这个哪里会超时了。可能是字符串问题?可能是遍历时候的问题?算了,反正这题也不仅仅只有这个方法,大不了换一个实现方式好了。
不过看别人的代码,对于较短比如这里只有三位的,实际也不需要怎么保存再处理了,直接一步到位处理作为循环变量就可以了。
浙公网安备 33010602011771号