博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
题解 CF962C 【Make a Square】
阅读量:4647 次
发布时间:2019-06-09

本文共 1940 字,大约阅读时间需要 6 分钟。

这是一个深搜的模板题。

首先,我们发现n的位数很小,只有9位。于是我们想到了深搜算法。

首先,把n拆分成数组,记n的数位个数位$|n|$。

枚举$|n|$个元素的全排列。

之后我们判定。

一个是完全平方数当且仅当 

$\left\lfloor\sqrt(x)\right\rfloor$ = $\sqrt(x)$

于是对于每一个全排列,把他们拼起来,然后判定即可

注意要去除前导零和长度为0的情况。

代码中,存放排列使用$vector$实现的

 

// Author : harry// Language : C++ (GNU C++ 11)// Upload : CodeForces / luogu// Time : 2018.9// Problem : Make a Square// Tell Myself : Think Twice Code Once// All rights reserved#include #include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std ;#define rep(i,a,b) for (int (i)=(a);(i)<=(b);(i)++)#define Rep(i,a,b) for (int (i)=(a)-1;(i)<(b);(i)++)#define REP(i,a,b) for (int (i)=(a);(i)>=(b);(i)--)#define reg(i,x) for (int (i)=head[x];(i);i=e[i].next)#define ull unsigned long long#define ll long long#define ls ((x)<<1)#define rs ((x)<<1|1)#define mp make_pair#define pb push_back#define fi first#define se second#define endl '\n'#define Pii pair
const int N = 100010 ;const int iinf = INT_MAX/2 ;const ll linf = LONG_MAX/2 ;const int MOD = 1e9+7 ;inline int read(){ int X=0,w=0; char ch=0; while(!isdigit(ch)) {w|=ch=='-';ch=getchar();} while(isdigit(ch)) X=(X<<3)+(X<<1)+(ch^48),ch=getchar(); return w?-X:X;}void write(int x){ if(x<0) putchar('-'),x=-x; if(x>9) write(x/10); putchar(x%10+'0');}int a[20] ;int n,ans=-1,x ;vector
b ;void init(int x){ while(x) a[++n]=x%10,x/=10 ; reverse(a+1,a+n+1) ;}bool judge(int m){ //判定是不是完全平方数 double x=sqrt(m); if (floor(x)==x) return 1; return 0;}bool check(vector
dig){ //判定 int tmp=0 ; for (int i=0;i
dig){ //深搜 if (k==n+1){ if (check(dig)) ans=max(ans,(int)dig.size()); return ; } dfs(k+1,dig); dig.pb(a[k]);dfs(k+1,dig) ;}int main(){ scanf("%d",&x) ; init(x) ; dfs(1,b) ; if (ans==-1) printf("-1\n") ; else printf("%d\n",n-ans) ;}

转载于:https://www.cnblogs.com/harryhqg/articles/9637577.html

你可能感兴趣的文章
INNO SETUP 获得命令行参数
查看>>
clientcontainerThrift Types
查看>>
链接全局变量再说BSS段的清理
查看>>
HTML5与CSS3权威指南之CSS3学习记录
查看>>
docker安装部署
查看>>
AVL树、splay树(伸展树)和红黑树比较
查看>>
多媒体音量条显示异常跳动
查看>>
运算符及题目(2017.1.8)
查看>>
React接入Sentry.js
查看>>
ssh自动分发密匙脚本样板
查看>>
转 小辉_Ray CORS(跨域资源共享)
查看>>
Linux安装postgresql
查看>>
MyBatis启动:MapperStatement创建
查看>>
【 全干货 】5 分钟带你看懂 Docker !
查看>>
[转]优化Flash性能
查看>>
popStar手机游戏机机对战程序
查看>>
Java Web项目结构
查看>>
lambda表达式树
查看>>
二次注入原理及防御
查看>>
会话记住已登录功能
查看>>