PAT(1급)1009노트[20/25] 첫 번째 테스트 포인트 미통과!!!!
15337 단어 PAT(1급)
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.새 단어 기록
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;
}