社区讨论

不懂就问各位大佬

P1008[NOIP 1998 普及组] 三连击参与者 4已保存回复 9

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
9 条
当前快照
1 份
快照标识符
@m5tsfwf1
此快照首次捕获于
2025/01/12 23:46
去年
此快照最后确认于
2025/11/04 11:41
4 个月前
查看原帖
我这代码跑出来的结果明明没错为什么会过不了(我之后把我这代码跑出来的结果直接cout上去了能过);这个写法是我改的第三种,因为之前两种也能出答案但也过不了,当时以为是写法问题就换成了这一种(结构体名称纯是因为改红温了ε(┬┬﹏┬┬)3) 这个代码的思路首先确定个位数,然后将其在数组a中排除掉(令其等于-1),然后由于第一个数为最小的数,所以他的百位数肯定小于等于3,通过循环来得到这个数,即P,然后用ooo来判断p是否能够满足要求(即判断p,2p, 3p的每一个数是否刚好为1到9)想法是我后期总结出来的,当时做的时候是想到哪写哪,所以写的比较繁杂,也有很多赘余的代码。
CPP
#include<iostream>
#include<cmath>
#include<iomanip>
#include<stdio.h>
#include<string>
#include<map>
#include<algorithm>    
#include<vector>

using namespace std;

struct wcnm{
	int w;
	int ww;
	int www;
};

static vector<wcnm> qqq; 
void refresh(int (&aaa)[9],int a[]){
	for(int i=0;i<9;i++){
		aaa[i]=a[i];
	}
}
bool ooo(int q){
	int qq=2*q;
	int qqq=3*q;
	int a[9];
	for(int i=0;i<9;i++){
		if(q!=0){
			a[i]=q%10;
			q/=10;
		}
		else if(q==0&&qq!=0){
			a[i]=qq%10;
			qq/=10;
		}
		else if(q==0&&qq==0&&qqq!=0){
			a[i]=qqq%10;
			qqq/=10;
		}
		else a[i]=0;
	}
	sort(a,a+9);
	for(int i=0;i<9;i++){
		if(a[i]==0) return false;
		if(a[i]==a[i+1]&&i<8) return false;
	}
	return true;
}
bool compare(wcnm a,wcnm b){
	return a.w<b.w;
}
void judge(int b[],int n){
	int q=n;
	int a[9];
	refresh(a,b);
	for(int i=0;i<9;i++){
		if(a[i]==n) a[i]=-1;
		if(a[i]==(2*n)%10){
			a[i]=-1;
		}
		if(a[i]==(3*n)%10){
			a[i]=-1;
		}
	}
	int aa[9],p;

	for(int i=0;i<3;i++){
		refresh(aa,a);
		if(aa[i]!=-1){
			p=100*aa[i]+q;
			int pp=p;
			aa[i]=-1;
			for(int j=0;j<9;j++){
				if(aa[j]!=-1){
					p=pp+10*aa[j];
					if(ooo(p)==1) {
						wcnm qqqq;
						qqqq.w=p;
						 
                                               
qqqq.ww=2*p;
						qqqq.www=3*p;
						qqq.push_back(qqqq);	
					}
				}
			}
			
		}
	}
}

int main(){
	int a[9]={1,2,3,4,5,6,7,8,9};
	for(int i1=0;i1<9;i1++){
		judge(a,a[i1]);
	}
	sort(qqq.begin(),qqq.end(),compare);
	for(int i=0;i<qqq.size();i++){
		cout<<qqq[i].w<<" "<<qqq[i].ww<<" "<<qqq[i].www<<endl; 
	}
	return 0;
} 

回复

9 条回复,欢迎继续交流。

正在加载回复...