-------------------题目难度较难,但挺有营养的。慢慢补。
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; }