求助大佬
查看原帖
求助大佬
1356325
Besokus楼主2025/1/26 17:52

为什么测试样例啥的都可以过,而且看了题解感觉思路没什么问题,但就是通过不了,求大佬帮忙看一看!!

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string>
#include <stdlib.h>
#include <math.h>
#include <vector>
#include <iostream>
#include <algorithm>

using namespace std;

struct Number {
	long long num;
	int size;
};

vector<Number>a;//全局变量储存数

int judge(int num) {
	if (num == 1 || num == 2 || num == 3 || num == 5 || num == 7)return 0;
	if (num == 4 || num == 6 || num == 9)return 1;
	if (num == 8)return 2;
}

bool cmp(const Number a, const Number b) {
	if (a.size != b.size) {
		return a.size < b.size;
	}
	else if (a.size == b.size) {
		return a.num < b.num;
	}
}

int main() {
	int n , x;
	cin >> n;
	for (int i = 0; i < n; i++) 
	{
		Number num;
		cin >> num.num;
		num.size = 0;
		a.push_back(num);
	}
	for (int i = 0; i < n; i++)
	{
		int b = a[i].num;
		int c = 0;//余数
		int size_ = 0;//大小
		while (b > 0) {
			c = b % 10;
			size_ += judge(c);
			b /= 10;
		}
		a[i].size = size_;
	}
	sort(a.begin(), a.end(), cmp);
	for (int i = 0; i < n; i++) {
		cout << a[i].num << " ";
	}

	return 0;
}
2025/1/26 17:52
加载中...