HDU 1708 Fibonacci String(문자열 에뮬레이션)

1650 단어
제목 주소: 클릭하여 링크 열기
사고방식: 임의의 문자열은 최초의 0개와 첫 개로 구성되어 있으며, 포함된 0개와 첫 번째 문자열의 개수만 기록하면 된다.
AC 코드:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <queue>
#include <stack>
#include <map>
#include <cstring>
#include <climits>
#include <cmath>
#include <cctype>

typedef long long ll;
using namespace std;

struct node
{
    int x;
    int y;
}a[60];

char str1[40];
char str2[40];
int num[40];
int num1[40];

int main()
{
    int t,k,i;
    scanf("%d",&t);
    while(t--)
    {
        memset(num,0,sizeof(num));
        memset(num1,0,sizeof(num1));
        scanf("%s%s",str1,str2);
        scanf("%d",&k);
        a[0].x = 1;
        a[0].y = 0;
        a[1].x = 0;
        a[1].y = 1;
        for(i=2; i<=k; i++)
        {
            a[i].x = a[i-1].x + a[i-2].x;
            a[i].y = a[i-1].y + a[i-2].y;
        }
        int n = strlen(str1);
        int m = strlen(str2);
        for(i=0; i<n; i++)
        {
            num[str1[i]-'a']++;
        }
        for(i=0; i<26; i++)
        {
            num[i] *= a[k].x;
        }
        for(i=0; i<m; i++)
        {
            num1[str2[i]-'a']++;
        }
        for(i=0; i<26; i++)
        {
            num1[i] *= a[k].y;
        }
        for(i=0; i<26; i++)
        {
            num[i] += num1[i];
        }
        for(i=0; i<26; i++)
        {
            printf("%c:%d
",'a'+i,num[i]); } printf("
"); } return 0; }

좋은 웹페이지 즐겨찾기