数据太水了
查看原帖
数据太水了
1492626
a123456a0000000000楼主2024/10/7 21:07

数据点完全没有考虑到“若取模结果去重后数组剩余数字不足两个”的情况,导致我的错误代码也可以通过此题。 我的错误代码如下

#include<bits/stdc++.h>//c++万能头文件 
using namespace std;
long long a,er,san=-1,b[200010];//定义数组和变量 
int main(){//主函数
	cin>>a;//输入变量a
	for(int i=0;i<a;i++){
		cin>>b[i];
	}//输入数组b的各个值 
	sort(b,b+a);//按从小到大的顺序,给数组b排序
	for(int i=a-2;i>=0;i--){
		if(b[i]!=b[a-1]){
			er=i;
			break;
		}//如果找到了数组b的严格次大值,记录并退出循环
	}
	for(int i=er-1;i>=0;i--){
		if(b[i]!=b[er]){//判断b[i]是否等于数组b的严格次大值(b[er]),如果不是则b[i]必定为数组b(已去重)第三大的数 
			san=b[i];//记录数组b(已去重)中第三大的数(即b[i]) 
			break;//退出循环 
		}
	}//寻找数组b(已去重)中第三大的值并记录
	er=b[er];
	if(san==-1){ 
		cout<<b[a-1]%er;
		//如果数组b只存在两个数,输出数组b中所有数取模后得到的所有值中的严格次大值(即数组b中最大的数模第二大的数) 
	}else if(san>=b[a-1]%er){
		cout<<san;//如符合条件,输出san(此时san应为数组b中所有数取模后得到的所有值中的严格次大值) 
	}else if(san<b[a-1]%er){
		cout<<b[a-1]%er;//如符合条件,输出b[a-1]%er(此时b[a-1]%er应为数组b中所有数取模后得到的所有值中的严格次大值) 
	}
	return 0;//结束运行 
}
2024/10/7 21:07
加载中...