codevs 1229 數字遊戲

來源:互聯網
上載者:User

標籤:case   har   get   asc   color   int   put   ring   using   

1229 數字遊戲

http://codevs.cn/problem/1229/

題目描述 DescriptionLele 最近上課的時候都很無聊,所以他發明了一個數字遊戲來打發時間。  這個遊戲是這樣的,首先,他拿出幾張紙片,分別寫上0到9之間的任一數字(可重複寫某個數字),然後,他叫同學隨便寫兩個數字X和K。Lele要做的事情就是重新拼這些紙牌,組成數字 T ,並且 T + X 是 K 的正整數倍。 有時候,當紙片很多的時候,Lele經常不能在一節課之內拼出來,但是他又想知道答案,所以,他想請你幫忙寫一個程式來計算答案。   輸入描述 Input Description
  1. 第一行包含兩個整數 N和M(0<N<9,0<M<2000),分別代表紙片的數目和詢問的數目。  
  2. 第二行包含N個整數分別代表紙片上寫的數字,每個數字可能取0~9。  
  3. 接下來有M行詢問,每個詢問給出兩個整數X和K(0<=x<10^9,0<K<100)。 
輸出描述 Output Description
  1. 對於每次詢問,如果能夠用這些紙片拼出符合答案的T,就輸出結果T。如果有多個結果,就輸出符合要求的最小的T。  
  2. 如果不能拼出,就輸出"None"。  
範例輸入 Sample Input

4 3 

1 2 3 4 

5 7 

33 6 

12 8  

範例輸出 Sample Output

1234

None

1324

方便判斷可以先讓x模k,然後爆搜全排列,挨個判斷,資料比較水,過了

因為挨個搜出來的排列是單放在每個數組元素裡的,最後需要的是整個數,

可以①,用遞迴的方法將其轉換成一個整數:

int work(i)

{     if(!i) return 0;

     return i+work(i)*10;

}

②,還可以儲存的時候用字元儲存數字,最後用sscanf(s,"%d",&n),將字串s轉化為n,注意s要從下標0開始使用

My Code採用的是第二種方法:

#include<cstdio>#include<iostream>#include<algorithm>using namespace std;int a[10];char s[10];int n,m,x,k,d;bool v[10],ok;char work(int p){    switch(a[p])    {        case 1:return ‘1‘;break;        case 2:return ‘2‘;break;        case 3:return ‘3‘;break;        case 4:return ‘4‘;break;        case 5:return ‘5‘;break;        case 6:return ‘6‘;break;        case 7:return ‘7‘;break;        case 8:return ‘8‘;break;        case 9:return ‘9‘;break;        case 0:return ‘0‘;break;    }}bool judge(){    sscanf(s,"%d",&d);    if((d+x)%k==0) return true;    return false;}void dfs(int h){    if(ok) return;    if(h>n)    {        ok=judge();        return;    }    for(int i=1;i<=n;i++)    {        if(!v[i])        {            s[h-1]=work(i);//數字轉化為字元,因為s下表要從0開始,所以h-1.注意不能用s[h-1]=char(i),這樣得到的是i的ASCLL碼             v[i]=true;            dfs(h+1);            v[i]=false;        }    }}int main(){    scanf("%d%d",&n,&m);    for(int i=1;i<=n;i++) scanf("%d",&a[i]);    sort(a+1,a+n+1);    for(int i=1;i<=m;i++)    {        scanf("%d%d",&x,&k);        ok=false;        x%=k;        dfs(1);        if(ok) printf("%d\n",d);        else printf("None\n");    }}

 

codevs 1229 數字遊戲

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.