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 超时。。 我想不通这个哪里会超时了。可能是字符串问题?可能是遍历时候的问题?算了,反正这题也不仅仅只有这个方法,大不了换一个实现方式好了。


不过看别人的代码,对于较短比如这里只有三位的,实际也不需要怎么保存再处理了,直接一步到位处理作为循环变量就可以了。

参考代码

posted on 2021-09-05 17:36  Atl212  阅读(36)  评论(0)    收藏  举报

导航