蓝桥杯国赛凑平方数

Posted ~千里之行,始于足下~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯国赛凑平方数相关的知识,希望对你有一定的参考价值。

在这里插入图片描述

#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
vector<int> nums;
long long ans;
// 0 2 4 9 16
void check(long long n)
{  
	int status = 0;
	if (n == 0) status = 1;
	while (n)
	{
		if ( (1 << (n % 10)) & status) return;//有重复数字 
		status |= (1 << (n % 10));
		n /= 10; 
	}
	//该数字不含重复数字 
	nums.push_back(status);
}
void dfs(int x, int y)
{
	if (y == (1 << 10) - 1)
	{
		ans++;
		return;
	}
	
	for (int i = x; i < nums.size(); i++)
	{
		if ( (nums[i] & y) == 0)//可以选 
		{
			dfs(i+1, nums[i] | y); 
		}
	}
}
int main()
{
	//凑平方数 
	for (long long i = 0; i < 100000; i++)
	{
	   	check(i * i);
	}	
	dfs(0, 0);
    cout << ans << endl;
	return 0;
} 

以上是关于蓝桥杯国赛凑平方数的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯国赛---平方拆分(dfs)

蓝桥杯国赛真题04python输出平方 蓝桥杯青少年组python编程 蓝桥杯国赛真题解析

蓝桥杯国赛12Scratch存钱罐 少儿编程scratch蓝桥杯国赛真题和答案讲解

蓝桥杯国赛奇偶覆盖

蓝桥杯国赛奇偶覆盖

蓝桥杯国赛奇偶覆盖