社区讨论

样例过了为什么是10分?

P1067[NOIP 2009 普及组] 多项式输出参与者 1已保存回复 0

讨论操作

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

当前回复
0 条
当前快照
1 份
快照标识符
@lt5nd4j0
此快照首次捕获于
2024/02/28 18:21
2 年前
此快照最后确认于
2024/02/28 21:06
2 年前
查看原帖
CPP
#include<cstdio>
int zf(int a){
	if(a>0) return 1;
	else if(a==0) return 0;
	else if(a<0) return -1;
}
int cz(int a){
	if(a==1) return 1;
	else if(a==-1) return -1;
	else return 0;
}
int sc(int a){
	if(zf(a)==1){
		if(cz(a)==1) return 10;//为正一 
		else if(cz(a)==0) return 11;//正数(除了一) 
	}
	else if(zf(a)==-1){
		if(cz(a)==-1) return 20;//为负一 
		else if(cz(a)==0) return 21;//负数(除负一) 
	}
} 
int main(){
	int n,a[105],flag=0;
	scanf("%d",&n);
	for(int i=1;i<=n+1;i++){
		scanf("%d",&a[i]);
	}
	for(int i=1,j=n;i<=n,j>1;i++,j--){
		if(flag==0&&sc(a[i])!=0){
			flag=1;
			if(sc(a[i])==10) printf("x^%d",j);
			else if(sc(a[i])==11) printf("%dx^%d",a[i],j);
			else if(sc(a[i])==20) printf("-x^%d",j);
			else if(sc(a[i])==21) printf("%dx^%d",a[i],j);//首个输出特殊 
		}
		else{
			if(sc(a[i])==10) printf("+x^%d",j);
			else if(sc(a[i])==11) printf("+%dx^%d",a[i],j);
			else if(sc(a[i])==20) printf("-x^%d",j);
			else if(sc(a[i])==21) printf("%dx^%d",a[i],j);
		}
	}
	if(sc(a[n+1])==10) printf("+%d",a[n+1]);
	else if(sc(a[n+1])==11) printf("+%d",a[n+1]);
	else if(sc(a[n+1])==20) printf("-%d",a[n+1]);
	else if(sc(a[n+1])==21) printf("%d",a[n+1]);
	else if(sc(a[n+1])==0) printf("%d",0);
	return 0;
}

回复

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

正在加载回复...