2016年第七届 蓝桥杯 全国总决赛B题(完全平方数)
来源:互联网 发布:用java编写简单计算器 编辑:程序博客网 时间:2024/04/29 18:05
题目意思就是:
给你0,1,2,3,4,5,6,7,8,9十个数字,要你选出任意一个或几个组合在一起成为完全平方数,每个数字都必须选且只能选一次,求可能的方案。
比如有其中几种符合题意的情况:
0 16 25 73984
0 1 625 73984
0 4 16 537289
0 16 784 5329
0 25 784 1936
ans=300;
#include<iostream>using namespace std;#include<cstring>#include<cstdio>#include<vector>#include<algorithm>#include<cmath>typedef long long ll;const ll inf=(ll)(0x3f3f3f3f);int ans=0;ll t[105];vector<ll> vec[500];int len=0;ll b[15];int lens[600];const int maxn=900005;ll pri[maxn];bool judge(ll x) { ll o1=(ll)(sqrt(x)); return o1*o1==x;}void solve(ll *a,int num) { memset(b,inf,sizeof(b)); int u=0,pos=0; bool is=true; for(int i=0; i<num; ++i) { ll s=0; if(!a[pos]&&t[i]>1) { is=false; break; } for(int j=pos; j<t[i]+pos; ++j) { s=s*10+a[j]; } b[u]=s; ++u; pos=t[i]+pos; } if(is) { sort(b,b+u); bool issame=true; for(int i=0; i<len; ++i) { int sj=lens[i]; if(sj!=u)continue; bool same1=true; for(int j=sj-1; j>=0; --j) { if(vec[i][j]!=b[j]) { same1=false; break; } } if(same1) { issame=false; break; } }//判重 if(issame) { ++len; lens[len-1]=u; for(int i=0; i<u; ++i) { vec[len-1].push_back(b[i]);// cout<<b[i]<<" "; }// cout<<endl; ++ans; } }}ll ppp=(ll)maxn;void dfs(ll *a,int sum,int num,int pos) { if(!sum) { solve(a,num); } else if(sum<0); else { for(int i=sum; i>=1; --i) {//求划分数 t[num]=i; ll ts=0; bool can=true; if(i>1&&a[pos]==0)continue; for(int j=pos; j<pos+i&&can; ++j) { ts=ts*10+a[j]; } if((ts<ppp&&(!pri[ts]))||!judge(ts))continue;//剪枝 dfs(a,sum-i,num+1,pos+i); } }}int main() { ll a[]= {0,1,2,3,4,5,6,7,8,9}; for(int i=0; i<500; ++i) vec[i].clear(); for(ll i=0; i<ppp; ++i) { pri[i]=judge(i); } int op=0; do { dfs(a,10,0,0); } while(next_permutation(a,a+10)); cout<<ans<<endl; return 0;}
0 0
- 2016年第七届 蓝桥杯 全国总决赛B题(完全平方数)
- 蓝桥杯 第七届决赛 平方末尾 JAVA
- 第七届蓝桥杯大赛个人赛决赛(软件类C语言B组)第二题:凑平方数(深搜)
- 蓝桥杯2016决赛 凑平方数
- 第五届蓝桥杯决赛 生物芯片(完全平方数)
- 【第七届蓝桥杯大赛个人赛(软件类)决赛B组 凑平方数 】+ DFS + set
- 蓝桥杯第六届总决赛B组
- 蓝桥杯全国总决赛落下帷幕!!!!
- 2016 第七届 蓝桥杯国赛 凑平方数
- 第七届蓝桥杯决赛JavaA组第二题_凑平方数
- 凑平方数 第七届蓝桥杯决赛javaA组
- 蓝桥杯2016年第七届决赛C_C++程序设计本科B组
- 2016蓝桥杯决赛 凑平方数(暴力DFS)
- 2016年蓝桥杯决赛第二题凑平方数
- 蓝桥杯决赛之凑平方数
- 2016年蓝桥杯决赛 凑平方数
- 我院同学在2013年第四届“蓝桥杯”全国软件专业人才设计与创业大赛全国总决赛中获得佳绩
- 2015 蓝桥杯全国总决赛第一题(送分题) 积分之谜
- Winform开发框架之读卡器和条码扫描枪的数据接收处理
- 链表的逆置
- C语言中字符串测试函数总结
- c++6.1
- 浅谈数据分析和数据建模
- 2016年第七届 蓝桥杯 全国总决赛B题(完全平方数)
- 第三方社会化评论系统体验报告
- 北航面试之离散数学
- redis方法
- dhtmlxScheduler数据库增删改ssh+jsp+ajax
- 用指向函数的指针作函数参数
- c++6.2
- 第十二周上机实践项目2:Time类中的运算符重载
- leetcode.44. Wildcard Matching