-------------------题目难度较难,但挺有营养的。慢慢补。

 

A .ASCII Addition

pro:用一定的形式表示1到9,让你计算加法。

sol:模拟。 

solved by fzl;

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=2000010;
typedef long long ll;
string s[11] =
{
    "xxxxxx...xx...xx...xx...xx...xxxxxx",
    "....x....x....x....x....x....x....x",
    "xxxxx....x....xxxxxxx....x....xxxxx",
    "xxxxx....x....xxxxxx....x....xxxxxx",
    "x...xx...xx...xxxxxx....x....x....x",
    "xxxxxx....x....xxxxx....x....xxxxxx",
    "xxxxxx....x....xxxxxx...xx...xxxxxx",
    "xxxxx....x....x....x....x....x....x",
    "xxxxxx...xx...xxxxxxx...xx...xxxxxx",
    "xxxxxx...xx...xxxxxx....x....xxxxxx",
    ".......x....x..xxxxx..x....x......."
};
char Map[10][1000];
int judge(int x)
{
    string tmp;
    for(int i = 0; i < 7; i++)
        for(int j = x; j < x + 5; j++)tmp += Map[i][j];
    for(int i = 0; i <= 10; i++)if(s[i] == tmp)return i;
}
int main()
{
    for(int i = 0; i < 7; i++)cin >> Map[i];
    int n = strlen(Map[0]);
    ll cnt = 0, a;
    for(int i = 0; i < n; i += 6)
    {
        int tmp = judge(i);
        if(tmp == 10){a = cnt;cnt = 0;continue;}
        cnt = cnt * 10 + tmp;
    }
    a = a + cnt;
    stringstream ss;string tmp;
    ss << a;
    ss >> tmp;
    for(int i = 0; i < 7; i++)for(int j = 0; j < tmp.size(); j++)
    {
        for(int k = 5 * i; k < 5 * i + 5; k++)cout<<s[tmp[j] - '0'][k];
        if(j == tmp.size() - 1)cout<<endl;
        else cout<<".";
    }
    return 0;
}
View Code

相关文章: