手感練習解答


d498: 我不說髒話 https://zerojudge.tw/ShowProblem?problemid=d498

#include <iostream>

using namespace std;

int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cout << "I don't say swear words!"<< endl;
    }
}

a104: 排序 https://zerojudge.tw/ShowProblem?problemid=a104

#include<bits/stdc++.h>
using namespace std;
int main(){
    int a[1010];
    int n;
    while(cin>>n){
        for(int i=0;i<n;i++){
            cin>>a[i];
        }
        sort(a,a+n);
        for(int i=0;i<n;i++){
            cout<<a[i]<<" ";
        }
        cout<<endl; //記得要endl
    }
    return 0;
}

d073: 分組報告 https://zerojudge.tw/ShowProblem?problemid=d073

#include <iostream>
using namespace std;
int main()
{
    int n;
    int groupNum;
    cin>>n;
    groupNum=n/3;
    if(n%3>0){//有餘數的話,組數要再加1
        groupNum++;
    }
    cout<<groupNum;
}

d649: 數字三角形 https://zerojudge.tw/ShowProblem?problemid=d649

#include <iostream>
#include <string>
using namespace std;
int main( )
{
    int n;
    while (cin >> n) {
        // 輸入為0時結束程式
        if (n == 0){
            return 0;
        }

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

            //先印出_的部分(越來越少)
            for (int k = n - 1; k > i; k--)
                cout << "_";

            //後面接著印出+的部分 (越來越多)
            for (int j = 0; j <= i; j++)
            cout << "+";

            cout << endl;
        }
    }
    return 0;
}

a022: 迴文 https://zerojudge.tw/ShowProblem?problemid=a022

#include <bits/stdc++.h>
using namespace std;

int main(){
    string str;
    bool pass;
    while(cin>>str){
        pass=true;
        for(int i = 0; i<str.size()/2;i++){
            if(str[i] != str[str.size()-i-1]){
                pass = false;
                break;
            }
        }
        if(pass){
            cout<<"yes"<<endl;
        }else{
            cout<<"no"<<endl;
        }
    }
}

d143: 11172 - Relational Operators https://zerojudge.tw/ShowProblem?problemid=d143

#include<bits/stdc++.h>
using namespace std;

main() {

    int t,a,b;
    while(cin>>t){
        for(int i=0;i<t;i++){
            cin>>a>>b;
            if(a>b){
                cout<<">"<<endl;
            }else if(a<b){
                cout<<"<"<<endl;
            }else{
                cout<<"="<<endl;
            }
            }
        }

    }

d649: 數字三角形 https://zerojudge.tw/ShowProblem?problemid=d649

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    while(cin>>n){

        for(int i =0; i<n ;i++){
            for(int j=n-i;j>1;j--){
                cout<<"_";
            }
            for(int j=0;j<=i;j++){
                cout<<"+";
            }
            cout<<endl;
        }
    }
}

d827: 買鉛筆 https://zerojudge.tw/ShowProblem?problemid=d827

#include <bits/stdc++.h>
using namespace std;

int main(){
    int n;
    cin>>n;
    cout<<n/12*50+n%12*5;

}

d485: 我愛偶數 https://zerojudge.tw/ShowProblem?problemid=d485

#include <bits/stdc++.h>
using namespace std;

int main(){

    int a,b,cnt=0;
    cin>>a>>b;

    if(a%2)a++;
    if(b%2)b--;

    cnt=(b-a)/2+1;

    cout<<cnt;

}

d065: 三人行必有我師 https://zerojudge.tw/ShowProblem?problemid=d065

#include<bits/stdc++.h>
using namespace std;

int main(){

    int a[3];
    for(int i=0;i<3;i++){
        cin>>a[i];
    }
    sort(a,a+3);
    cout<<a[2];

}

d060: 還要等多久啊?https://zerojudge.tw/ShowProblem?problemid=d060

#include<bits/stdc++.h>
using namespace std;

int main(){

    int t;

    cin>>t;

    if(t>25){
        cout<<60-t+25;
    }else{
        cout<<25-t;
    }
}

d478: 共同的數 - 簡易版 https://zerojudge.tw/ShowProblem?problemid=d478

#include <bits/stdc++.h>
using namespace std;

int main(){

    int n,m;
    int a[10000];
    int b[10000];
    int ans;
    int acnt=0;
    int bcnt=0;

    while(cin>>n>>m){

    for(int g=0;g<n;g++){
        for(int i = 0; i<m; i++){
            cin>>a[i];
        }

        for(int i = 0; i<m; i++){
            cin>>b[i];
        }

        sort(a,a+m);
        sort(b,b+m);

        ans=0;
        acnt=0;
        bcnt=0;
        while(!(acnt>=m||bcnt>=m)){

            if(a[acnt]==b[bcnt]){
                ans++;
                acnt++;
                bcnt++;
            }
            else if(a[acnt]>b[bcnt]){
                bcnt++;
            }else{
                acnt++;
            }
        }

        cout<<ans<<endl;
    }
}
}

038: 數字翻轉 https://zerojudge.tw/ShowProblem?problemid=a038

#include <bits/stdc++.h>
using namespace std;

int main(){

    int n;
    int ans=0;
    cin>>n;
    while(n/10){
        ans=ans*10+(n%10);
        n=n/10;
    }
    ans=ans*10+n;
    cout<<ans;

}

d092: 算式也可以比大小!?(struct, sort) https://zerojudge.tw/ShowProblem?problemid=d092

#include<iostream>
#include<algorithm>

using namespace std;

struct Ans
{
    int sum;
    char status;//60 < 61 = 62 >
}ans[1000];

int compareAB(int a,int b)
{
    if(a==b)
        return 0;
    if(a>b)
        return 1;
    if(a<b)
        return -1;
}

int compareAns(Ans a, Ans b)//決定元素大小用的函數,這個例子會由大排到小 
{
    if(a.sum == b.sum)//數字相等檢查符號 
        return (a.status > b.status);
    else   //數字不相等檢查數字 
        return (a.sum > b.sum);
}


int main()
{
    int n;
    cin >> n;

    while(n>0)
    {
        for(int i=0; i<n; i++)
        {
            int a,b;
            cin >> a >> b;
            ans[i].sum = a+b;
            ans[i].status = (char)(compareAB(a,b) + '=');  //ascii 
        }

        sort(ans, ans+n, compareAns);

        for(int i=0; i<n; i++)
        {
            cout << ans[i].status << ans[i].sum << " ";
        }
        cout << endl;

        cin >> n;
    }

}

a686: 蝸牛往上爬 https://zerojudge.tw/ShowProblem?problemid=a686

#include <bits/stdc++.h>
using namespace std;

int main(){

    long long int days,x,y,z,t;
    cin>>t;

    for(int i=0;i<t;i++){
        cin>>x>>y>>z;

        if(x-y<=0)
        {
            cout<<"1"<<endl;
        }
        else if(y-z<=0)
        {
            cout<<"Poor Snail"<<endl;
        }
        else
        {
            days=1;
            x=x-y;
            while(x>0){
            x=x-(y-z);
            days++;
        }
        cout<<days<<endl;
    }
}

}

d212: 東東爬階梯 https://zerojudge.tw/ShowProblem?problemid=d212

DP 寫法可以AC

#include <bits/stdc++.h>
using namespace std;


int main()
{
    int i,n;
    long long arr[101];

    arr[1] = 1;
    arr[2] = 2;

    for(i=3;i<100;i++)
        arr[i] = arr[i-1] + arr[i-2];

    while(cin>>n)
        printf("%lld\n",arr[n]);

    return 0;
}

DFS寫法只能過測試,正式會TLE

    #include<bits/stdc++.h>
    using namespace std;

    int goal,ans;

    void dfs(int n){

        if(n>goal){

            return;
        }
        if(n==goal){
                ans++;

            return;
        }
        dfs(n+1);
        dfs(n+2);

    }

    int main(){

        while(cin>>goal){
                ans=0;
           if(goal==1){
            ans=1;
           }else{
               dfs(1);
               dfs(2);
           }
           cout<<ans<<endl;

        }

    }

b572: 忘了東西的傑克 https://zerojudge.tw/ShowProblem?problemid=b572

#include<bits/stdc++.h>
using namespace std;

int main(){

    int t;
    int h1, h2, m1, m2, walkTime;
    while (cin >> t) {
        for (int i= 0; i < t;i++){
            cin >> h1 >> m1 >> h2 >> m2 >> walkTime;
            //發時時間-現在時間>=走路時間
            //發車時間怎麼計算
            int time1 = h1 * 60 + m1;
            int time2 = h2 * 60 + m2;
            if (time2 - time1 >= walkTime) {
                cout << "Yes" << endl;
            } else {
                cout << "No" << endl;
            }
        }
    }
}

c004: 10812 - Beat the Spread! https://zerojudge.tw/ShowProblem?problemid=c004

#include<bits/stdc++.h>
using namespace std;

int main(){

    int t;
    int a,b;
    int flag;

    while(cin>>t){
        for(int i=0;i<t;i++){
            cin>>a>>b;
            int gap = abs(a-b);
            flag=false;
            for(int i=a;i>=b;i--){
                if(2*i-b==a){
                    flag=true;
                    cout<<i<<" "<<i-b<<endl;
                    break;
                }
            }
            if(!flag){
                cout<<"impossible"<<endl;
            }
        }
    }
}

d887: 1.山脈種類(chain) https://zerojudge.tw/ShowProblem?problemid=d887 此DFS寫法會TLE,請參考解答

#include<bits/stdc++.h>
using namespace std;

int ans;
int n;

void dfs(int now,int height){

    if(height<0||height>n){
        return;
    }

    if(now==n*2){
        if(height==0){
            ans++;
        }
        return;
    }
    dfs(now+1,height+1);
    dfs(now+1,height-1);
}


int main(){

    while(cin>>n){
        ans=0;

        dfs(1,1);
        cout<<ans<<endl;
    }

}

a059: 完全平方和

https://zerojudge.tw/ShowProblem?problemid=a059


#include<bits/stdc++.h>
using namespace std;

int main(){

    int t, a, b;
    int sum;

    while (cin >> t) {
        for (int i= 0; i < t;i++){
            cin >> a >> b;
            sum = 0;
            int n = ceil(sqrt(a));
            while (n * n <= b) {
                sum += n * n;
                n++;
            }
            cout << "Case " << i + 1 << ": " << sum << endl;
        }
    }

}

c203: 13185 - DPA Numbers I https://zerojudge.tw/ShowProblem?problemid=c203


#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    int sum;
    int t;
    while(cin>>t){
        for(int g=0;g<t;g++){
            sum=0;
            cin>>n;
            for(int i=1;i<n;i++){
                if(n%i==0){
                  sum+=i;
                }
            }

            if(sum==n){
                cout<<"perfect"<<endl;
            }else if(sum>n){
                cout<<"abundant"<<endl;
            }else{
                cout<<"deficient"<<endl;
            }
        }
    }
}

a012: 10055 - Hashmat the Brave Warrior (要用long long int) https://zerojudge.tw/ShowProblem?problemid=a012

#include<bits/stdc++.h>
using namespace std;

int main(){
    long long int  a,b;

    while(cin>>a>>b){
        cout<<abs(a-b)<<endl;
    }
}

c024: 10079 - Pizza Cutting (long long int, 找公式) https://zerojudge.tw/ShowProblem?problemid=c024

#include<bits/stdc++.h>
using namespace std;

int main(){
    long long int n,sum;
    while(cin>>n){
        if(n<0){
            break;
        }
        sum=1;
        for(int i=1;i<=n;i++){
            sum+=i;
        }
        cout<<sum<<endl;
    }

}

a536: 11689 - Soda Surpler https://zerojudge.tw/ShowProblem?problemid=a536 (換完後的汽水罐,等喝完後還可以再換,所以不是只能換一次這樣)

#include<bits/stdc++.h>
using namespace std;

int main(){
    int t,e,f,c,sum,colas;
    while(cin>>t){
        for(int i=0;i<t;i++){
            cin>>e>>f>>c;
            sum=0;
            colas = e+f;
            while(colas/c){
                sum += colas/c;
                colas =colas/c+colas%c;
            }

            cout<<sum<<endl;
        }
    }
}

c022: 10783 - Odd Sum https://zerojudge.tw/ShowProblem?problemid=c022

#include<bits/stdc++.h>
using namespace std;

int main(){
    int t,a,b,sum;
    while(cin>>t){
        for(int i=0;i<t;i++){
            cin>>a>>b;
            if(a%2==0)a++;
            if(b%2==0)b--;
            sum=0;
            for(int j=a;j<=b;j+=2){
                sum+=j;
            }
            cout<<"Case "<<i+1<<": "<<sum<<endl;
        }

    }
}

d038: 00900 - Brick Wall Patterns https://zerojudge.tw/ShowProblem?problemid=d038

#include<bits/stdc++.h>
using namespace std;

int main(){
    long long int t,ary[51],n;
    ary[1]=1;
    ary[2]=2;
    for(int i=3;i<=50;i++){
        ary[i]=ary[i-1]+ary[i-2];
    }

    while(cin>>n){
        if(n==0)break;
        cout<<ary[n]<<endl;
    }
}

a524: 手機之謎 https://zerojudge.tw/ShowProblem?problemid=a524

#include<bits/stdc++.h>
using namespace std;
int ans[10]={0};
int b[10]={0};
int n;

void dfs(int x)
{
    int i;
    if(x==n){
        for(i=0;i<n;i++)
            cout<<ans[i];
        cout<<endl;
        return;
    }
    for(i=n;i>=1;i--){
        if(b[i]==0){
            b[i]=1;
            ans[x]=i;
            dfs(x+1);
            b[i]=0;
        }
    }
}
int main()
{
 while(cin>>n)
 {
     for(int i=0;i<n;i++){
        b[i]=0;
     }
  dfs(0);
 }
 return 0;
}

d115: 數字包牌 https://zerojudge.tw/ShowProblem?problemid=d115

#include <bits/stdc++.h>
using namespace std;

int step[100],num[100];   /*  num陣列永遠儲存排序後的元素值*/
int n,m;

/*
currStep 表示目前取到第幾個
start 表示開始的索引值位置,儲存入step陣列
step陣列儲存所取的元素索引值
*/
void find(int currStep,int start){
  int j;
  if (currStep == m){
    for(int i=0;i<m;i++){
      cout << num[step[i]] << " ";
    }
    cout << endl;
  }else{
    for(j=start;j<n;j++){
      step[currStep]=j;
      find(currStep+1,j+1);
    }
  }
}


int main(){
  while (cin >> n){
    for(int i=0;i<n;i++){
      cin >> num[i];
    }
    cin >> m;
    sort(num,num+n);

    find(0,0);
    cout << endl;
  }
}

提款卡密碼 https://zerojudge.tw/ShowProblem?problemid=a065

#include <bits/stdc++.h>
using namespace std;

int main(){

    char str[8];

    while(cin>>str){
        for(int i=1;i<7;i++){
            cout<<abs(str[i]-str[i-1]);
        }
        cout<<endl;
    }

}

b964. 第 1 題 成績指標 https://zerojudge.tw/ShowProblem?problemid=b964

// apcs-1 成績指標
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
const int MaxN = 20;
const int US=101;  //最高分數 +1
const int LS= -1;  //最低分數 -1
const int PS= 60;  //及格分數

int main()
{
  int i, n , sco;
  int a[MaxN];
  bool first=true;
  while(cin >> n)
  {
     int bsco = US;  //及格最低分
     int wsco =LS;  // 不及格最高分
     for(i=0; i<n; ++i)
     {
        cin >> a[i];
        if(a[i]>=PS)
          bsco = min(bsco,a[i]);  //及格最低
        else
          wsco = max(wsco,a[i]);  //不及格最高
     }
     sort(a,a+n);

   cout << a[0];
     for(i=1; i<n; ++i) cout <<' '<< a[i];
     cout << endl;
     if( wsco==LS ) cout << "best case\n";
     else cout << wsco << endl;
     if( bsco==US ) cout << "worst case\n";
     else cout << bsco << endl;
  }
  return 0;
}

results matching ""

    No results matching ""