zoukankan      html  css  js  c++  java
  • N的N次方(高校俱乐部)

    最近一直在刷字符串和线段树,也越来越少玩高校俱乐部,无聊看到一题N的N次方的问题,脑海中各种打表就涌现出来了。

    弄了不一会儿,就写完了,马上提交,但是系统好像出了问题,提示“哦哦,出了点状况”,但是分数加了上去并且挑战成功也有我……

    到现在我还不知道我的做法对,或者不对,暂且我就当作是对吧……

    来看题目:

    我在计算N的N次方,给出结果a,你能否求出N呢?我给出的结果会出错,但是如果出错的话,我保证和正确地结果只有一个数字不对(不会增加或者减少数字)。给出输入,求输出的整数(保证结果在int范围内),输入用字符串表示,长度不超过500000,无首0。如果证明我出错了,请输出-1。例如,输入27,输出3。而输入20,只能输出-1了。输入格式:多组数据,第一行是 T,表示数据组数。以下T行,每行是一个大整数。输出格式对每组数据,输出一行答案。

    输入样例

    4

    3

    4

    3225

    387420489

    输出样例:

    -1

    2

    -1

    9

    我简单说一下我的思路:

    500000位数,N大概去到1600,也就是只有1600个可能。

    这时我就想,直接贴表吧!

    但是50万位啊,复制粘帖都心碎……

    后来我就想,太稀疏了,用hash吧,而hash函数怎么设置呢?

    一个很自然的想法就是把所有的位数加起来即可。

    即 for(i=0;i<n;i++) key+=a[i];

    后来,想了一下,这样hash的结果好像不是很准确……

    所以我又写多了hash,平方和……还是很自然的想法

    for(i=0;i<n;i++) key+=a[i]*a[i];

    这样我就可以只需要贴1600行了……

    哇拉拉地打了一个表,贴了一下……好像是过了。

    (注意,如果你不懂大数n^n次方,1你可以学习一下大数。2.你可以用java来水)



    我觉得我完全按没有必要去传字符串,直接用就好了……不过手快交了就算了。

    后来,我用另外一个号测试只用hash2,好像也得分了……

    求大神的各种做法。

    不给发代码啊……这是怎么敏感了……

    有兴趣的可以联系我……

  • 相关阅读:
    radio checkbox select
    easyui_tree
    MySQL编码问题
    Django shell调试
    encode,decode
    结束进程
    Django models 字段
    re
    (转)为Ubuntu安装翻译词典(星际译王)
    python3进阶之正则表达式之基本概念
  • 原文地址:https://www.cnblogs.com/dengyaolong/p/3697192.html
Copyright © 2011-2022 走看看