---
# System prepended metadata

title: 成德C++入門ans

---

# C++入門解答
:::warning
:warning: 答案供**參考**，非唯一解。
:::

:::info
:information_source: 可直接在網址輸入區打 hackmd.io/@yubo0818/cpp_ans 不需打https://
:::

## 9/11 作業
1. [a001 : 哈囉](https://zerojudge.tw/ShowProblem?problemid=a001)
:::spoiler ans
```cpp=
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string s;
    cin>>s;
    cout<<"hello, "<<s;

    return 0;
}
```
:::

2. [a002 : 簡易加法](https://zerojudge.tw/ShowProblem?problemid=a002)
:::spoiler ans
```cpp=
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a+b;

    return 0;
}
```
:::
3. [d049 : 中華民國萬歲!](https://zerojudge.tw/ShowProblem?problemid=d049)
:::spoiler ans
```cpp=
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a;
    cin>>a;
    cout<<(a-1911);

    return 0;
}
```
:::
4. [d050 : 妳那裡現在幾點了?](https://zerojudge.tw/ShowProblem?problemid=d050)
:::spoiler ans
```cpp=
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin>>n;
    if(n<15) cout<<n+24-15;
    else cout<<n-15;
    
    return 0;
}
```
:::
5. [d051 : 糟糕，我發燒了!](https://zerojudge.tw/ShowProblem?problemid=d051)
:::spoiler ans
```cpp=
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    double a;
    cin>>a;
    a=(a - 32) * 5 / 9;
    cout<<fixed<<setprecision(3);
    cout<<a;

    return 0;
}
```
:::
6. [d073 : 分組報告](https://zerojudge.tw/ShowProblem?problemid=d073)
:::spoiler ans
```cpp=
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n;
    cin>>n;
    if(n%3==0) cout<<n/3;
    else cout<<(n/3)+1;
    
    return 0;
}
```
:::
7. [d827 : 買鉛筆](https://zerojudge.tw/ShowProblem?problemid=d827)
:::spoiler ans
```cpp=
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int n,ans=0;
    cin>>n;
    ans=(n/12)*50;
    ans+=(n%12)*5;
    cout<<ans;
    
    return 0;
}
```
:::

## 10/2 作業
1. [a003 : 兩光法師占卜術](https://zerojudge.tw/ShowProblem?problemid=a003)
:::spoiler ans
```cpp=
#include <iostream>     
using namespace std; 
int main() {
int m,d;
  cin>>m>>d;
  int s=(m*2+d)%3;
  if(s==0){
    cout<<"普通\n";
  }
  else if(s==1){
    cout<<"吉\n";
  } 
  else if(s==2){
  cout<<"大吉\n";
  }
  return 0;
}
```
:::
2. [d058 : BASIC 的 SGN 函數](https://zerojudge.tw/ShowProblem?problemid=d058)
:::spoiler ans if解
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    if(n>0){
        cout<<1;
    }
    if(n==0){
        cout<<0;
    }
    if(n<0){
        cout<<-1;
    }

    return 0;
}
```
:::
:::spoiler ans 布林解
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    cout << (n>0) - (n<0);

    return 0;
}
```
:::
3. [d060 : 還要等多久啊？](https://zerojudge.tw/ShowProblem?problemid=d060)
:::spoiler ans
```cpp=
#include <iostream>     
using namespace std; 

int main() {  
    int n;
    cin>>n;
    if(n>25){
        cout<<60-n+25;
    }
    else(cout<<25-n);
    
    return 0;
}
```
:::
4. [d063 : 0 與 1](https://zerojudge.tw/ShowProblem?problemid=d063)
:::spoiler ans if解
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    if(n==0){
        cout<<1;
    }
    if(n==1){
        cout<<0;
    }

    return 0;
}
```
:::
:::spoiler ans 布林解
```cpp=
#include <iostream>
using namespace std;

int main()
{
    bool n;
    cin>>n;
    cout<<(!n);

    return 0;
}
```
:::
5. [d064 : ㄑㄧˊ 數？](https://zerojudge.tw/ShowProblem?problemid=d064)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    if(n%2==0){
        cout<<"Even";
    }
    if(n%2==1){
        cout<<"Odd";
    }

    return 0;
}
```
:::
## 10/30作業
1. [e835 : p2.表演座位 (Seats)](https://zerojudge.tw/ShowProblem?problemid=e835)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    
    if(n>7500){
        cout<<3<<" ";
        
        if((n-7500)%25==0){
            cout<<(n-7500)/25<<" "<<25;
        }
        else cout<<((n-7500)/25)+1<<" "<<n%25;
        
    }else if(n>2500){
        cout<<2<<" ";
        
        if((n-2500)%50==0){
            cout<<(n-2500)/50<<" "<<50;
        }
        else cout<<((n-2500)/50)+1<<" "<<n%50;
        
    }else{
        cout<<1<<" ";
        
        if(n%25==0){
            cout<<n/25<<" "<<25;
        }
        else cout<<(n/25)+1<<" "<<n%25;
    }

    return 0;
}
```
:::
2. [d669 : 11677 - Alarm Clock](https://zerojudge.tw/ShowProblem?problemid=d669)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main() {
    
    int h1,m1,h2,m2;
    while (cin>>h1>>m1>>h2>>m2)
    {
        if(h1==0&&m1==0&&h2==0&&m2==0) break;
        
        int one, two;
        if (h1==0) one=(24*60)+m1;
        else one=(60*h1)+m1;
        
        if (h2==0) two=(24*60)+m2;
        else two=(60*h2)+m2;
        
        if (two<one) two+=(60*24);
        
        cout<<two-one<<"\n";
    }
}
```
:::
3. [d067 : 格瑞哥里的煩惱 (1 行版)](https://zerojudge.tw/ShowProblem?problemid=d067)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n;
    cin>>n;
    if(n%4!=0||(n%400!=0&&n%100==0)) cout<<"a normal year";
    else cout<<"a leap year";

    return 0;
}
```
:::
4. [d069 : 格瑞哥里的煩惱 (t 行版)](https://zerojudge.tw/ShowProblem?problemid=d069)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int t;
    cin>>t;
    while(t){
        int n=0;
        cin>>n;
        if(n%4!=0||(n%400!=0&&n%100==0)) cout<<"a normal year"<<"\n";
        else cout<<"a leap year"<<"\n";
        t--;
    }
    
    return 0;
}
```
:::
5. [d072. 格瑞哥里的煩惱 (Case 版)](https://zerojudge.tw/ShowProblem?problemid=d072)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int t;
    cin>>t;
    for(int i=1;i<=t;i++){
        int n=0;
        cin>>n;
        if(n%4!=0||(n%400!=0&&n%100==0)) cout<<"Case "<<i<<": a normal year"<<"\n";
        else cout<<"Case "<<i<<": a leap year"<<"\n";
    }
    
    return 0;
}
```
:::
6. [d070 : 格瑞哥里的煩惱 (0 尾版)](https://zerojudge.tw/ShowProblem?problemid=d070)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n=0;
    while(cin>>n){
        if(n==0) break;
        if(n%4!=0||(n%400!=0&&n%100==0)) cout<<"a normal year"<<"\n";
        else cout<<"a leap year"<<"\n";
    }
    
    return 0;
}
```
:::
7. [d071 : 格瑞哥里的煩惱 (EOF 版)](https://zerojudge.tw/ShowProblem?problemid=d071)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n=0;
    while(cin>>n){
        if(n%4!=0||(n%400!=0&&n%100==0)) cout<<"a normal year"<<"\n";
        else cout<<"a leap year"<<"\n";
    }
    
    return 0;
}
```
:::
## 11/6 作業
1. [e834 : P1.批發出貨(Wholesale)](https://zerojudge.tw/ShowProblem?problemid=e834)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int m=0;
    cin>>m;
    
    int n=0;
    while(cin>>n){
        if(n==0) break;
        if(n%m==0) cout<<n/m<<"\n";
        else cout<<m-n%m<<"\n";
    }

    return 0;
}
```
:::
2. [a148 : You Cannot Pass?!](https://zerojudge.tw/ShowProblem?problemid=a148)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n=0;
    while(cin>>n){
        double add=0;
        int cnt=n;
        while(n--){
            int i;
            cin>>i;
            add+=i;
        }
        add/=cnt;
        if(add>59) cout<<"no"<<"\n";
        else cout<<"yes"<<"\n";
    }

    return 0;
}
```
:::
3. [d010 : 盈數、虧數和完全數](https://zerojudge.tw/ShowProblem?problemid=d010)
:::info
:information_source: 已更改。
:::
:::spoiler ans
```cpp=
#include<iostream>
using namespace std;
int main(){
    int n;
    while(cin>>n){
        int ans=0;
        for(int i=1;i<n;i++){
            if(n%i==0) ans+=i;
        }
        if(ans==n){
            cout<<"完全數\n";
        }
        else{
            cout<<((ans>n)?"盈數\n":"虧數\n");
        }
    }
    return 0;
}

```
:::

4. [c067 : 00591 - Box of Bricks](https://zerojudge.tw/ShowProblem?problemid=c067)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;

int main()
{
    int n=0;
    int m=1;
    while(cin>>n){
        if(n==0) break;
        int arr[n]={};
        int add=0;
        for(int i=0;i<n;i++){
            cin>>arr[i];
            add+=arr[i];
        }
        add/=n;
        int ans=0;
        for(int i=0;i<n;i++){
            if(arr[i]>add) ans+=arr[i]-add;
        }
        cout<<"Set #"<<m<<"\n"<<"The minimum number of moves is "<<ans<<"."<<"\n";
        m++;
    }
    
    return 0;
}
```
:::
5. [a010 : 因數分解](https://zerojudge.tw/ShowProblem?problemid=a010)
:::spoiler ans
```cpp=
#include<iostream>
using namespace std;

int main(){
    int a,i,cnt,A;
    cin>>a;
    A=a;                                                             
    for(i=2;i<=a;i++){                                       
        cnt=0;                                                
        while(a%i==0){
            a=a/i;
            cnt++;                                         
        }
        if(cnt==0) continue;
        else if(a==1&&cnt>1||a==A&&cnt>1) cout<<i<<"^"<<cnt;
        else if(a==1||a==A) cout<<i;
        else if(cnt==1) cout<<i<<" * ";
        else cout<<i<<"^"<<cnt<<" * ";
    }
}
```
:::
## 11/13作業
1. [紅豆餅 (Red Bean Cake)](https://drive.google.com/file/d/1fQhs65BQ4hH_LFThNCDNW9TBSi-5rHUy/view?pli=1)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;
#define ff(i,n) for(int i=0;i<n;i++)

int main()
{
    int n,b=0,ans=0;
    cin>>n;
    int arr[10]={};
    ff(i,n){
        int a=-2;
        cin>>a;
        arr[a]++;
        if(a>0) b++;
    }
    ff(i,6) cout<<arr[i]<<" ";
    
    if(arr[0]>b){
        ans=b*59+(arr[0]-b)*50;
    }else if(arr[0]<b){
        ans=arr[0]*59+(b-arr[0])*20;
    }else if(arr[0]==b){
        ans=b*59;
    }
    cout<<ans;
    
    return 0;
}
```
:::
2. [樂透 (Lotto)](https://drive.google.com/file/d/1ySVXhPEzL5Q_inMEesyochYOZBWoZSnu/view)
:::spoiler ans
```cpp=
#include <iostream>
using namespace std;
#define ff(i,n) for(int i=0;i<n;i++)

int main()
{
    int you[6]={},yes[7]={};
    int same=0;
    bool one=0;
    ff(i,6){
        cin>>you[i];
    }
    ff(i,7){
        cin>>yes[i];
    }
    
    ff(i,6){
        if(you[i]==yes[6]){
            one=true;
        }
        ff(j,6){
            if(you[i]==yes[j]){
                same++;
                break;
            }
        }
    }
        if(one==true&&same==5) cout<<"B";
        else if(one==true&&same==4) cout<<"D";
        else if(one==true&&same==3) cout<<"F";
        else if(one==true&&same==2) cout<<"G";
        else if(one==0&&same==6) cout<<"A";
        else if(one==0&&same==5) cout<<"C";
        else if(one==0&&same==4) cout<<"E";
        else if(one==0&&same==3) cout<<"H";
        else cout<<"X";

    return 0;
}
```
:::
3. [符文 (Runes)](https://drive.google.com/file/d/1sKgqFvKYB3ZwbVDYOydcvVAf1hvyLglu/view)
:::spoiler ans
```cpp=
#include <iostream>
#include <vector>

using namespace std;

int main() 
    int N, M; 
    
    if (!(cin >> N >> M)) return 0;

    vector<int> A(N);
    for (int i = 0; i < N; ++i) {
        cin >> A[i];
    }

    vector<int> B(M);
    for (int i = 0; i < M; ++i) {
        cin >> B[i];
    }
    int result_pos = -1;
    for (int i = 0; i <= N - M; ++i) {
        
        bool current_match = true;
        

        for (int j = 0; j < M; ++j) {
            if (A[i + j] != B[j]) {
                current_match = false;
                break;
            }
        }
        
        if (current_match) {
            result_pos = i + 1;
            break; 
        }
    }

    if (result_pos != -1) {
        cout << result_pos << endl;
    } else {
        cout << "not found" << endl;
    }

    return 0;
}
```
:::
## 11/27作業
:::spoiler ans 1.
```cpp=
#include<iostream>
#include<vector>
using namespace std;
int main(){
    int r,c;
    while(cin>>r>>c){
        vector<vector<int>>matrix(105,vector<int>(105));
        for(int i=0;i<r;i++){
            for(int j=0;j<c;j++){
                cin>>matrix[i][j];
            }
        }
        for(int i=0;i<c;i++){
            for(int j=0;j<r;j++){
                cout<<matrix[j][i]<<" ";  //注意是 [j][i] 不是 [i][j] !
            }
            cout<<"\n";
        }
    }
    return 0;
}

```
:::
:::spoiler ans 2.
```cpp=
#include <iostream>

using namespace std;



int main() {

ios::sync_with_stdio(0);

  cin.tie(0);

int t, n, m;

cin >> t;

while (t--){

cin >> n >> m;

int a[144];

int len=m*n;

for (int i=0; i<len; i++){

cin >> a[i];

}

bool go=true;

for (int i=0; i<=len/2; i++){

if (a[i]!=a[len-1-i]){

go=false;

break;

}

}

if (go){

cout <<"go forward"<<endl;

}

else {

cout <<"keep defending"<<endl;

}

}

}

```
:::
:::spoiler ans 3.
```cpp=
#include <bits/stdc++.h>
using namespace std;

int main ()
{
	int i;
	int n, a1, a2;
	
	while (cin >> n) {
		int a[n+1]={}, b, t = 0;
		
		cin >> a1;
		
		for (i=1;i<n;i++) {
			cin >> a2;
			
			b = abs(a1-a2);
			
			if (a[b] == 0 && b >= 1 && b < n) {
				a[b] = 1;
				t++;
			}
			
			a1 = a2;
		}
		
		if (t == n - 1)
			cout << "Jolly" << endl;
		else
			cout << "Not jolly" << endl;
	}

	return 0;
}

```
:::
:::spoiler ans 4.
```cpp=
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
	ll n;
	ll flag =0;
	ll nn=0;

	while(cin>>n){
		ll a[100000]={0};
		flag=0;
		nn++;
		vector<ll>v;
			for(ll i=0;i<n;++i){
				ll t;
				cin>>t;
				v.push_back(t);
			}

			for(ll i=0;i<n;++i){
				for(ll j=i;j<n;++j){
					ll sum=v[i]+v[j];
			
					if(a[sum]!=0){
						flag =1;
						break;
					}else{

						a[sum]=1;
					}
				}
			}
			if(flag==1){
				cout<<"Case #"<<nn<<": It is not a B2-Sequence."<<endl;

			}
			else{
				cout<<"Case #"<<nn<<": It is a B2-Sequence."<<endl;
			}
	}


}

```
:::

## 12/11作業
:::spoiler ans 1.
```cpp=
#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long int a,b;
    cin>>a>>b;
    int n=0;
    int store;
    int total=0;
    int ifcout=0;
    for(int num=a;num<b+1;num++)
    {
        store=num;
        while(num>0)
        {
            num/=10;
            n+=1;
        }
        num=store;
        while(num>0)
        {
            total+=pow(num%10,n);
            num/=10;
        }
        num=store;
        if(total==store)
        {
            cout<<total<<' ';
            ifcout=1;
        }
        total=0;
        n=0;
    }
    if(ifcout==0)
    {
        cout<<"none";
    }
}

```
:::
:::spoiler ans 2.
```cpp=
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    int n, m;
    while(cin>>n>>m)
    {
        vector<int> foods(n); //foods = {0,0,0,...,0}
        for(int i = 1; i <= n; i++)
        {
            cin>>foods[i];
            foods[i] += foods[i-1];
        }
        for(int i = 0; i < m; i++)
        {
            int start, end;
            cin>>start>>end;
            cout<<foods[end] - foods[start - 1]<<endl;
        }
    }
    return 0;
}
```
:::
:::spoiler ans 3.
```cpp=
#include <bits/stdc++.h>
using namespace std;
int main() {
    int a,b,c,r;double x1,x2,x;
    cin>>a>>b>>c;
    if (a!=0){
            r=b*b - 4*a*c;
            if(r>0){
                x1=(b*-1 + sqrt(r))/(2*a);
                x2=(b*-1 - sqrt(r))/(2*a);
                if(x1>x2)
                    cout<<"Two different roots x1="<<x1<<" , x2="<<x2;
                else
                    cout<<"Two different roots x1="<<x2<<" , x2="<<x1;
            }
            else if(r==0){
                x=(b*-1 + sqrt(r))/(2*a);
                cout<<"Two same roots x="<<x;
            }
            else
                cout<<"No real root";
    }
    else
        cout<<"No real root";
    return 0;
}
```
:::
:::spoiler ans 4.
```cpp=
#include <bits/stdc++.h>
using namespace std;
int gcd(int m, int n) { 
    int r = 0; 
 
    while(n != 0) { 
        r = m % n; 
        m = n; 
        n = r; 
    } 
 
    return m; 
}
int main() {
	long long int  l,n,h[10000];
	while (cin>>n){
		if(n==0) return 0;
		int g=0;

for(int i=1;i<n;i++){

for(int j=i+1;j<=n;j++){

    g+=gcd(i,j);

}
		}
	cout<<g<<endl;

}
return 0;
}
```
:::
:::spoiler ans 5.
```cpp=
#include <iostream>
#include <sstream>

using namespace std;

int main() {
    int t;
    string s;
    char head, tail, pre;

    if (!(cin >> t)) return 0;

    getline(cin, s);

    while (t--) {
        bool loop = true;
        int len = 1;

        if (!getline(cin, s) || s.empty()) continue;

        head = s[0];
        tail = s[s.size() - 1];

        if (head == tail) {
            cout << "NO LOOP\n";
            continue;
        }

        stringstream ss(s);
        string x;
        ss >> x; 
        pre = x[1];

        while (ss >> x) {
            len++;
            if (pre == x[0]) {
                loop = false;
                break;
            }
            pre = x[1];
        }

        if (len > 1 && loop) {
            cout << "LOOP\n";
        } else {
            cout << "NO LOOP\n";
        }
    }
    
    return 0;
}
```
:::