B4131 [信息与未来 2014] 奇怪的车牌号

· · 题解

思路很简单,枚举所有递增序列即可;

AC Code

#include <bits/stdc++.h>
using namespace std;
const int N = 1e7 + 100;
#define maxn 10010
#define mod 1e9 + 7
#define upto(i, a, b) for (int i = a; i <= b; i++)
#define downto(i, a, b) for (int i = a; i >= b; i--)
#define rep(i, a, b) for (int i = a; i < b; i++)
bool is_square(int n)//平方数判断函数
{
    int gen = (int)sqrt(n);
    return gen * gen == n;
}

int main()
{
    int cnt = 0;
    int a[8] = {0123, 1234, 2345, 3456, 4567, 5678, 6789};
    int b[8] = {0123, 1234, 2345, 3456, 4567, 5678, 6789};//所有递增序列
    upto(i, 1, 7)
    {
        int c = i - 1, d = i, e = i + 1, f = i + 2;//分离每一位
        upto(j, 1, 7)
        {
            int c2 = j - 1, d2 = j, e2 = j + 1, f2 = j + 2;
            if (is_square(c + d + e + f + c2 + d2 + e2 + f2))
                cnt++;
        }
    }
    cout << cnt;
    return 0;
}