PAT(1급)1009노트[20/25] 첫 번째 테스트 포인트 미통과!!!!

15337 단어 PAT(1급)
PAT(1급)1009노트
1. 원제는 PAT 홈페이지 참조
이번에 너는 A 를 찾도록 허락받았다×B, A와 B는 두 개의 다항식이다.입력: 입력 파일마다 테스트 용례가 포함되어 있습니다.각 테스트 용례는 두 줄을 차지하고 한 줄에 여러 가지 정보가 포함되어 있다. K N1 aN1 N2 aN2... NK aNK는 K가 0이 아닌 terms가 여러 가지 식에 있는 수량이면Ni and aNi(i=1,2,...,K)는 계수와 차방수이다.1≤K≤10, 0≤NK 출력: 모든 테스트 용례에 대해 A와 B를 같은 줄에 출력해야 하며 줄마다 별도의 빈칸이 없도록 주의해야 한다.소수점 다음 자리까지 정확하게 해 주세요.
2.새 단어 기록
  • decimal-n. 소수-adj.소수의10진수
  • 3. 지식 포인트【&Question】
  • 첫 번째 문제는 역시 문제 심사 문제이다.사실 이 문제의 지수 상한선은 0-2001...어리석은 나는 0-21 TAT인 줄 알았는데,
  • 두 번째 문제는 아직 해결되지 않았다.이론적으로 나는 나의 방법이 계수가 마이너스인 상황을 겸용할 수 있다고 생각한다.계수 가화 후 마이너스면 최종 벡터 용기에 넣지 않아요.so 첫 번째 테스트는 실패했어.미래의 자기가 돌아와서 정정하기를 기다리다.
  • 사고방식 정리: 두 개의 벡터가 A와 B를 넣고 곱한 다음에 결과를 정리하고 계수를 합쳐서 조건을 만족시키는 요소를 FINLA 에 넣는다.ANSER 컨테이너마지막으로 답안 용기의 크기와 순서대로 지수와 계수를 출력합니다.

  • 4. 코드 record
    #include
    #include
    #include
    #include
    #include
    #include
    #include 
    using namespace std;
    #define MAXSIZE 30
    
    struct elem
    {
    	
    	float coeficient; //  
    	int exponent;   //  
    };
    int main() {
    	vector<elem>A, B, tempanswer,FINAL_ANSWER;
    	float ANSWER[20001] = { 0 };
    	int Anum, Bnum;
    	elem INPUT,TEMP;
    	cin >> Anum;
    	for (int i = 0; i < Anum; i++) {
    		cin >> INPUT.exponent;
    		cin >> INPUT.coeficient;
    		A.push_back(INPUT);
    	}
    	cin >> Bnum;
    	for (int j = 0; j < Bnum; j++) {
    		cin >> INPUT.exponent;
    		cin >> INPUT.coeficient;
    		B.push_back(INPUT);
    	}
    	
    	//  
    	int a = 0, b,key=0;
    	for (a; a < Anum; a++) {
    		for (b=0; b < Bnum; b++) {
    			INPUT.exponent = A[a].exponent + B[b].exponent;
    			INPUT.coeficient = A[a].coeficient * B[b].coeficient;
    			tempanswer.push_back(INPUT);
    			key++;
    		}
    	}
    
    	//    
    	// answer    exponent  ,   coeficient     。
    	for (int m = 0; m < 2001;m++)
    	{
    		for (int n = 0; n < tempanswer.size(); n++) {
    			if (tempanswer[n].exponent == m) {
    				ANSWER[m]+= tempanswer[n].coeficient;
    			}
    		}
    	}
    
    	//  
    	for (int kk = 2000; kk >=0; kk--) {
    		if (ANSWER[kk] != 0) {
    			TEMP.exponent = kk;
    			TEMP.coeficient = ANSWER[kk];
    			FINAL_ANSWER.push_back(TEMP);
    		}
    		if (kk==0&&ANSWER[kk]!=0){
    			TEMP.exponent = kk;
    			TEMP.coeficient = ANSWER[kk];
    			FINAL_ANSWER.push_back(TEMP);
    		}
    	}
    	cout << FINAL_ANSWER.size()<<" ";
    	for (int p = 0; p < FINAL_ANSWER.size(); p++)
    	{
    		cout << FINAL_ANSWER[p].exponent << " " <<fixed<< setprecision(1) << FINAL_ANSWER[p].coeficient;
    		if ((p + 1) < FINAL_ANSWER.size())cout << " ";
    	}
    	
    	return 0;
    }
    
    

    좋은 웹페이지 즐겨찾기