为什么开了O2优化全RE,不开反而全AC
查看原帖
为什么开了O2优化全RE,不开反而全AC
631097
Cysheper楼主2024/7/27 16:46
#include<cstdio>
#include<iostream>
#include<cmath>
#include <stdio.h>
#include <math.h>
#include<string>

using namespace std;

string s[27] = { "zero","one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen ","fifteen","sixteen","seventeen","eighteen","nineteen","twenty","a","both","another","first","second","third"};
int a[27] = {0,1,4,9,16,25,36,49,64,81,00,21,44,69,96,25,56,89,24,61,0,1,4,1,1,4,9};
string s1[7];
int b[6] = {0};
int c = 0;
int main() {
	for (int i = 0; i < 7; ++i) {
		cin >> s1[i];		//数据输入
	}
	int num = 0;
	for (int i = 0; i < 6; ++i) {
		for (int j = 0; j < 26; ++j) {
			if (s1[i] == s[j]) {		//判断是否为英文数字
				b[num] = a[j];		
				num++;
			}
		}
	}
	int num2 = 6;
	for (int j = 0; j < 6; ++j) {			//冒泡排序,把大的数往后排
		for (int i = 0; i < num2; ++i) {
			if (b[i] > b[i + 1]) {
				c = b[i];
				b[i] = b[i + 1];
				b[i + 1] = c;
			}
		}
		num2--;
	}
	int num3 = 0,num4=0;
	for (int i = 0; i < 6; ++i) {		//判断是否全零
		if (b[i] == 0) num4++;
	}
	if (num4 == 6) cout << 0;
	for (int i = 0; i < 6; ++i) {		
		if (b[i] != 0) {
			if (b[i] < 10 && num3!=0) {		//非首项小于10的数前补0
				cout << "0" << b[i];
			}
			if (b[i] < 10 && num3 == 0) {	//首项小于10的数不补0
				cout << b[i];
				num3++;
			}
			if (b[i] >= 10) {		//大于10的数正常输出
				cout << b[i];
			}
		}
	}

	return 0;
}
2024/7/27 16:46
加载中...