zoukankan      html  css  js  c++  java
  • ZR993

    ZR993

    首先,这种和平方有关的,首先应当考虑根号做法

    这道题目,我们可以直接暴力(log_{10}w + 10)判断一个数是否能够由原数变化的到

    直接(O(sqrt{n}))枚举所有的平方数,直接暴力上面的方法check

    #include<cstdio>
    #include<iostream>
    #include<queue>
    #include<algorithm>
    #include<cstring>
    #include<cctype>
    #include<vector>
    #include<ctime>
    #include<map>
    #define LL long long
    #define pii pair<int,int>
    #define mk make_pair
    #define fi first
    #define se second
    using namespace std;
    const int N = 55;
    const LL INF = 1e13;
    LL n;
    int s[N];
    int num[11];
    int num2[11];
    int h[N];
    inline LL read(){
    	LL v = 0,c = 1;char ch = getchar();
    	while(!isdigit(ch)){
    		if(ch == '-') c = -1;
    		ch = getchar();
    	}
    	while(isdigit(ch)){
    		v = v * 10 + ch - 48;
    		ch = getchar();
    	}
    	return v * c;
    }
    inline bool work(LL x){
    	memset(num2,0,sizeof(num2));
    	if(x == 0) num2[0]++;
    	while(x){
    		num2[x % 10]++;
    		x /= 10;	
    	}
    	for(int i = 0;i < 10;++i) if(num2[i] > num[i]) return 0;
    	return 1;
    }
    int main(){
    	n = read();
    	while(n){
    		memset(num,0,sizeof(num));
    		LL g = n;int t = 0;
    		while(g){
    			h[++t] = g % 10; 
    			num[g % 10]++;
    			g /= 10;	
    		}
    		sort(h + 1,h + t + 1);
    		LL to = 1;
    		for(int i = t;i >= 1;--i) to = to * 10 + h[i]; 
    		for(LL i = 0;1ll * i * i <= to;++i){
    			if(work(i) && work(i * i))
    				printf("%lld * %lld = %lld
    ",i,i,1ll * i * i);
    		}
    		n = read();	
    	}
    	return 0;	
    }
    
  • 相关阅读:
    hortonworks
    使用Ambari快速部署Hadoop大数据环境
    js模板引擎
    Scala中的语言特性是如何实现的2
    IOS多线程编程一:概述
    Struts框架
    总体设计
    算法介绍
    社区与关怀
    从C#的Singleton设计模式
  • 原文地址:https://www.cnblogs.com/wyxdrqc/p/11658220.html
Copyright © 2011-2022 走看看