codeforces-962-c

Posted 荒岛的龟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces-962-c相关的知识,希望对你有一定的参考价值。

题意:给你一个数,问从中删除某几位数字后重新组成的数字是否是某个数的平方;

解题思路:数据小,dfs直接搜,每位数只有两种选择,要或者不要

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#define ll long long
using namespace std;
ll a[20];
int ans=999999;
int cnt;
void dfs(int step,ll x,int len)
{
    if(step>cnt)
        return;
    int m=sqrt(x);
    int tx=x;
    if(m*m==x&&x!=0)
    {
    	int t=0;
		while(tx)
		{
			t++;
			tx=tx/10;
		 } 
        ans=min(ans,cnt-t);
    }
    dfs(step+1,x,len);
    dfs(step+1,x+a[step+1]*pow(10,len),len+1);
}
int main()
{
    ll n;
    ll z;
    cnt=0;
    cin>>n;
    z=n;
    int q=sqrt(n);
    if(q*q==n)
        cout<<"0\n";
    else
    {

    while(z)
    {
        cnt++;
        a[cnt]=z%10;
        z=z/10;
    }
    dfs(0,0,0);
    if(ans==999999)
        cout<<"-1\n";
    else
        cout<<ans<<endl;
    }
}

  

以上是关于codeforces-962-c的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器

VSCode自定义代码片段——声明函数