다음 main 함수에 맞춰 Divisor 클래스와 이를 상속받는 클래스인 CommonDivisor를 작성하라.

Divisor 클래스의 멤버변수는 다음과 같다.

1. 정수 a

2. 약수의 개수

Divisor 클래스의 멤버함수는 다음과 같다.

1. 정수 a 입력

2. 약수의 개수 출력

CommonDivisor 클래스의 멤버변수는 다음과 같다.

1. 정수 b

CommonDivisor 클래스의 멤버함수는 다음과 같다.

1. 정수 a, b 입력

2. 공약수의 개수 출력

다음 main함수에 맞춰 클래스를 작성하라.

int main() {

Divisor *d1 = new Divisor();

Divisor *d2 = new CommonDivisor();

CommonDivisor *d3 = new CommonDivisor();

d1->input();

d1->printCount();

d2->input();

d2->printCount();

d3->input();

d3->printCount();

return 0;

}

Input & Output

입력은 0이 아닌 정수이다.

Divisor형 포인터가 CommonDivisor 객체를 가리킬 경우, 정수 100과 a의 공약수를 구한다.

Sample Input

10

6

20 16

Sample Output

Divisor: 4

CommonDivisor: 2

CommonDivisor: 3



-------------------------------------------------------------------------------------------

#include <iostream>
using namespace std;

class Divisor {
protected:
int a, cnt=0;
public:
void input() {
cin >> a;
}

virtual void printCount() {
cout <<"Divisor: ";
for (int i = 1; i <= a; i++) {
if (a%i == 0) {
cnt++;
}
}

cout <<cnt<< endl;
}

};




class CommonDivisor:public Divisor {
protected:
int b=0;
public:
void input() {
cin >> a>>b;
}

virtual void printCount() {
cout <<"CommonDivisor: ";

if (b == 0) {
int cnt2=0;
for(int i=1; i<=100 && i<=a; i++){
if (100%i==0 && a %i ==0) {
cnt2++;
}
}
cout<<cnt2<<endl;
}


else {
int cnt2=0;
for (int i = 1; i <= a && i <= b; i++) {
if (a % i == 0 && b % i == 0) {
cnt2++;
}

}
cout <<cnt2;
}

}

};

int main() {

Divisor *d1 = new Divisor();

Divisor *d2 = new CommonDivisor();

CommonDivisor *d3 = new CommonDivisor();

d1->input();

d1->printCount();

d2->input();

d2->printCount();

d3->input();

d3->printCount();

return 0;

}

결과는 잘나오는데 제출하면 틀렸다고 나와서 그냥 잘려다가 글올려봅니다. 전 개좆밥입니다 으어어어

힌트만 알려주셔도 됩니다. 저같은 좆밥한테