HDU 4278 & HDU 4287

9454 단어 HDU
천진 인터넷 두 경기의 물문제...
제목: hdu4278

제목의 대의: 사실은 8진법 10진법의 전환이고 몇 줄은 해결된다.
코드:
 1 #include<iostream>

 2 #include<cstdio>

 3 #define ll long long

 4 using namespace std;

 5 ll n,m,ans,k,a[10]={0,1,2,0,3,4,5,6,0,7};

 6 int main(){

 7     while(cin>>n,n){

 8         ans = 0; k = 1; m = n;

 9         while(n){

10             ans += a[n%10] * k;

11             n /= 10;

12             k *= 8;

13         }

14         printf("%I64d: %I64d
",m,ans); 15 } 16 return 0; 17 }

 
----------------------------------------------------------------------------------------------
제목: hdu4287
 
제목의 대의: 휴대전화의 구궁격 입력법과 유사하다. 제목은 너에게 몇 개의 숫자 조합과 몇 개의 단어를 주고 이 숫자들이 각 단어의 개수를 구성할 수 있는지 통계해 달라고 요구한다.
이것은 맵으로 실현하면 매우 편리하다. 조작할 때 단어를 대응하는 숫자로 먼저 바꾼다.
 
 1 #include <iostream>

 2 #include <cstdio>

 3 #include <cstring>

 4 #include <map>

 5 using namespace std;

 6 #define X 5010

 7 int n,m;

 8 int tes[X];

 9 int a[] = {2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9,9};

10 char s[10];

11 

12 int main(){

13     int tt;

14     scanf("%d",&tt);

15     while(tt--){

16         int x,temp;

17         scanf("%d%d",&n,&m);

18         map<int,int> ma;

19         memset(tes,0,sizeof(tes));

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

21             scanf("%d",&x);

22             ma[x] = i;

23         }

24         for(int i = 0; i < m; i ++){

25             scanf("%s",s);

26             temp = 0;

27             for(int j = 0; s[j]; j ++)

28                 temp = temp*10+a[s[j]-'a'];

29             tes[ma[temp]] ++;

30         }

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

32             printf("%d
",tes[i]); 33 } 34 return 0; 35 }

 
 
 

좋은 웹페이지 즐겨찾기