找回密码
 欢迎注册
查看: 18102|回复: 6

[讨论] 相同数字组成的平方数

[复制链接]
发表于 2009-6-16 16:37:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
考虑1,6,9组成的三位数
169 = 13^2
196 = 14^2
961 = 31^2

现在有问题
1、假设有不重复的n个数字组成的集合A,由A中的不重复数字组成的n位平方数,对应A集合
    1)对A的每种情况,对应的平方数都有多少个,比如A = {1, 6, 9},对应有3个平方数
    2)如何挑选A使得组成的平方数最多

2、假设有n个重复的数字组成的集合A,由A中的可重复数字组成的n位平方数,对应A集合,且要求所有平方数具有相同的数字组成
    你能求出一个得到最多平方数的集合A,且列出其对应的平方数么
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-6-17 15:00:29 | 显示全部楼层
难道我这个题目有问题?

咋没人说话呢?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-6-17 18:03:46 | 显示全部楼层
穷举吧。不重复的n个数字组成的平方数一共才611个
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-6-18 10:24:22 | 显示全部楼层
呵呵,是的,不重复的有限的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-6-19 10:59:21 | 显示全部楼层
有时间我看看我能不能求出来。。。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-6-19 21:27:06 | 显示全部楼层
我写了一个弱弱的程序,得到了一些相关的结果,不过跟题目有点不一样,得到了下面的链:
1->LENS:1
144->441->LENS:2
169->196->961->LENS:3
10404->14400->40401->44100->LENS:4
10609->16900->19600->61009->90601->96100->LENS:6
1006009->1060900->1690000->1960000->6100900->9006001->9060100->9610000->LENS:8
10278436->10837264->23078416->32478601->38204761->38427601->42367081->47623801->
72148036->LENS:9
12348196->19324816->19412836->31281649->34916281->42981136->48219136->81234169->
83192641->91623184->LENS:10
14243076->31270464->37601424->41370624->43046721->44076321->47032164->47320641->
61027344->73410624->73462041->LENS:11
100240144->100420441->102414400->104244100->121044004->121440400->144024001->144
240100->201044041->400440121->404412100->441042001->441420100->LENS:13
100460529->104652900->104960025->105206049->120956004->169052004->169520400->194
602500->200165904->251000649->264095001->400520169->405216900->529046001->529460
100->605012409->621504900->624950001->659000241->964102500->LENS:20
102576384->105637284->158306724->176305284->180472356->183467025->187635204->208
571364->218034756->284057316->307265841->316057284->430728516->472801536->475283
601->560837124->570684321->576432081->734681025->783104256->825470361->853107264
->LENS:22
139854276->152843769->157326849->215384976->245893761->254817369->326597184->361
874529->375468129->382945761->385297641->412739856->523814769->529874361->537219
684->549386721->587432169->589324176->597362481->615387249->627953481->653927184
->672935481->697435281->714653289->735982641->743816529->842973156->847159236->9
23187456->LENS:30


1600000000以内最长的链,代码如下:

  1. /*
  2. 169 = 13^2
  3. 196 = 14^2
  4. 961 = 31^2
  5. 数码位置不对的平方数组合测试。
  6. winxos 2009-6-19
  7. */
  8. #include <iostream>
  9. #include <vector>
  10. #include <cmath>
  11. using namespace std;
  12. int isLike(int a,int b)
  13. {
  14. int t[10]={0};
  15. while(a)
  16. {
  17.   t[a%10]+=10;
  18.   t[b%10]+=1;
  19.   a/=10;
  20.   b/=10;
  21. }
  22. for (int i=0;i<10;i++)
  23.   if (t[i]%10 != t[i]/10)
  24.    return 0;
  25. return 1;
  26. }
  27. int main()
  28. {
  29. int i,maxlen=0,max=40000;
  30. int *table=new int[max];
  31. vector<int> chains; //记录链长
  32. for (i=1;i<max;i++)
  33. {
  34.   table[i]=i*i;
  35. }
  36. for (i=1;i<max;i++)
  37. {
  38.   chains.clear();
  39.   chains.push_back(table[i]); //第一个数
  40.   for (int j=i+1;j<max;j++)
  41.   {
  42.    if ((int)(log(table[j])/log(10)) > (int)(log(table[i])/log(10)))
  43.     break; //位数不同,提前跳出循环
  44.    if (table[j] == 0)
  45.     continue; //已经访问过,进入下一步
  46.    if (isLike(table[j],table[i]))
  47.    {
  48.     chains.push_back(table[j]);
  49.     table[j]=0; //将访问过的数划掉
  50.    }
  51.   }
  52.   if (chains.size() > maxlen)
  53.   {
  54.    maxlen=chains.size();
  55.    for (int j=0;j<maxlen;j++)
  56.     cout<<chains[j]<<"->";
  57.    cout<<"LENS:"<<maxlen<<endl;
  58.   }
  59. }
  60. return 0;
  61. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-7-8 19:07:26 | 显示全部楼层
回楼上,多谢你的参与

此问题确实比较简单
看的就是穷举的策略和检测的算法
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-5 23:34 , Processed in 0.044166 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表