Board logo

標題: 2021npsc_F_一個遊戲_C++解題 [打印本頁]

作者: 李泳霖    時間: 2022-10-22 09:44     標題: 2021npsc_F_一個遊戲_C++解題

本帖最後由 鄭繼威 於 2022-12-24 11:11 編輯

F.一個遊戲
Problem ID: game
某天,小Y 告訴小P 一個遊戲,那個遊戲叫做⼀個遊戲。
一個遊戲是一個遊戲。一個遊戲是一個一個人玩的遊戲。一個遊戲的玩家必須從 1 開始數
到 N,但必須要跳過一些小 Y 不喜歡的數字。
對於一個正整數 x,以及一個小 Y 會告訴你的正整數 K(K 介於 1 到 9 之間),只要滿足
下列至少一個條件,那麼小Y 就會不喜歡 x 這個數字:
• x 是 K 的倍數。
• x 寫成十進位之後包含 K 這個數字。
否則,小Y 就會喜歡 x 這個數字。
舉例來說,如果 K = 3,那麼 2, 8, 14 都是小 Y 喜歡的數字,而 3, 12, 23 都是小 Y 不喜歡的
數字。
小 P 現在想要開始玩一個遊戲。給定 N 以及 K,請你告訴小 P,在一個遊戲的過程中,他
會跳過多少小 Y 不喜歡的數字。

[attach]13747[/attach]

[attach]13748[/attach]

[attach]13749[/attach]

https://contest.cc.ntu.edu.tw/npsc2021/teamclient/contest_junior.pdf
作者: 李泳霖    時間: 2022-10-22 09:45

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. bool check(int x,int k)
  5. {
  6.         if(x%k==0)
  7.                 return true;
  8.         else{
  9.                 while(x>0){
  10.                         if(x%10==k)
  11.                                 return true;
  12.                         x=x/10;                       
  13.                 }      
  14.         }
  15.         return false;
  16. }

  17. int main()
  18. {
  19.         int N,K;
  20.         cin>>N>>K;
  21.         int cnt=0;
  22.         for(int i=1;i<=N;i++){
  23.                 if(check(i,K)==true)
  24.                         cnt++;
  25.         }
  26.         cout<<cnt<<endl;
  27.         return 0;
  28. }
複製代碼

作者: 利勁鋼    時間: 2022-10-22 11:27

  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5. int N,k,x,r,i,p,a[10];
  6. scanf("%d",&N);
  7. scanf("%d",&k);
  8. x=1;
  9. i=N/k;
  10. while(x<=N)
  11. {
  12. if((x%k)!=0)
  13. {
  14.     a[1]=x%10;
  15.      a[2]=(x%100-a[1])/10;
  16.      a[3]=(x%1000-a[2])/100;
  17.      a[4]=(x%10000-a[3])/1000;
  18.      a[5]=(x%100000-a[4])/10000;
  19.      a[6]=(x%1000000-a[5])/100000;
  20.      a[7]=(x%10000000-a[6])/1000000;
  21.      if(a[1]==k||a[2]==k||a[3]==k||a[4]==k||a[5]==k||a[6]==k||a[7]==k)
  22.      {
  23.          i++;
  24.      }
  25. }

  26.      x++;
  27. }
  28. printf("%d",i);
  29. }
複製代碼

作者: 許宸瑀    時間: 2022-10-22 11:56

  1. #include<iostream>
  2. #include<cstblib>
  3. using namespace std;

  4. bool check(int x,int k)

  5. {
  6.      
  7.     if(x%k==0)
  8.        return true;
  9.      else
  10.      {
  11.         while(x>0)
  12.         {
  13.            if(x%10==k)
  14.                return true
  15.             x=x/10      
  16.         }
  17.            
  18.      }
  19.      
  20. }
  21. int main(){
  22.     system("pause");
  23.     return 0;
  24. }
複製代碼

作者: 高昀昊    時間: 2022-10-22 11:58

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. bool check(int x,int k)
  5. {
  6.     if(x%k==0)
  7.     {
  8.         return true;
  9.     }else{
  10.         while(x>0)
  11.         {     
  12.             if(x/10==k)
  13.                 return true;
  14.             x/=10;   
  15.         }
  16.     }
  17. }
  18. int main()
  19. {
  20.     int x,k;
  21.     cin>>x>>k;
  22.     cout<<check(x,k);
  23.     system("pause");     
  24.     return 0;   
  25. }
複製代碼

作者: 孫子傑    時間: 2022-10-22 12:02

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. bool abc(int k,int x);
  5. {
  6.    if(x%k==0)
  7.    {
  8.        return true;      
  9.    }else  
  10.    {
  11.        while(x>0)
  12.        {
  13.           if(x%10==k)
  14.           {
  15.              return true;        
  16.           }      
  17.           x=x/10;
  18.        }   
  19.    }      
  20. }
  21. int main()
  22. {
  23.     system("pause");
  24.     return 0;
  25. }
複製代碼

作者: 郭博鈞    時間: 2022-10-22 12:03

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int main()
  5. {
  6.     int N,K,x;   
  7.     cin>>N;   
  8.     cin>>K;                           
  9.    for(int i=1;i<=N;i++)
  10.    {
  11.    while(i>K)
  12.     {
  13.         if(i%K==0)
  14.         {
  15.            x++;      
  16.         }     
  17.     }   
  18.    }
  19.    cout<<x;
  20. system("pause");
  21. return 0;   
  22. }
複製代碼

作者: 田家齊    時間: 2022-10-22 12:06

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int main()
  5. {
  6. int x=0,k,n;
  7. cin>>n>>k;
  8. for(int i=n;i>0;i--)
  9. {
  10. if(i%k==0 || (i-k)%10==0)
  11.     x++;      
  12. }else if(9)
  13. cout<<x;
  14.   system("pause");     
  15.   return 0;   
  16. }
複製代碼

作者: 柳侑辰    時間: 2022-10-22 12:06

本帖最後由 柳侑辰 於 2022-10-29 11:39 編輯
  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int main()
  5. {
  6.     int n,k,x=0;
  7.     cin>>n>>k;
  8.     for(int i=n;i>0;i--)
  9.     {
  10.         if(i%k==0 || (i-k)%10==0 || i/10==k)   
  11.             x++;      
  12.     }
  13.     cout<<x;
  14.     system("pause");
  15.     return 0;   
  16. }
複製代碼

作者: 高鋐鈞    時間: 2022-10-22 22:22

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int main()
  5. {
  6.         int K,N,total;
  7.         re:
  8.         cin>>N>>K;
  9.         if(N<1||N>500000||K<1||K>9)
  10.         {
  11.                 goto re;
  12.         }
  13.         for(int i=1;i<=N;i++)
  14.         {
  15.                 if(i%K==0)
  16.                 {       
  17.                         total+=1;
  18.                 }       
  19.                 else if(i%10==K||i/10==K)
  20.                 {
  21.                         if(i%10>=10||i/10>K)
  22.                         {
  23.                                 i/10;
  24.                         }
  25.                         else
  26.                         {
  27.                                 total+=1;
  28.                         }
  29.                 }
  30.         }
  31.         cout<<total;
  32.         system("pause");
  33.         return 0;
  34. }
複製代碼

作者: 鄭繼威    時間: 2022-10-29 11:35

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int main()
  5. {
  6.     int n,k,x=0;
  7.     cin>>n>>k;
  8.     for(int i=n;i>0;i--)
  9.     {
  10.         if(i%k==0 || (i-k)%10==0||i/10==k)   
  11.             x++;      
  12.     }
  13.     cout<<x;
  14.     system("pause");
  15.     return 0;   
  16. }
複製代碼

作者: 田家齊    時間: 2022-10-29 11:56

  1. #include<iostream>
  2. #include<cstdlib>
  3. using namespace std;
  4. int main()
  5. {
  6. int x=0,k,n;
  7. cin>>n>>k;
  8. for(int i=n;i>0;i--)
  9. {
  10. if(i%k==0 || (i-k)%10==0 || i/10==k)
  11. {
  12.     x++;
  13. }     
  14. }
  15. cout<<x;

  16.   system("pause");     
  17.   return 0;   
  18. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2