魔方吧·中文魔方俱乐部

 找回密码
 注册
搜索
热搜: 魔方
查看: 5036|回复: 25
打印 上一主题 下一主题

有趣的数论问题 [复制链接]

Rank: 2

积分
523
帖子
251
精华
1
UID
40010
性别
保密
跳转到指定楼层
1#
发表于 2013-12-29 23:42:31 |只看该作者 |正序浏览
1111.jpg

Rank: 2

积分
523
帖子
251
精华
1
UID
40010
性别
保密
26#
发表于 2014-1-16 12:01:47 |只看该作者
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Pai
{
    public partial class FormSort : Form
    {
        List<List<int>> lli = new List<List<int>>();
        public FormSort()
        {
            InitializeComponent();
        }

        private void FormSort_Load(object sender, EventArgs e)
        {
            lbMsg.Text = "";
            tCount.Enabled = false;
            bResult.Enabled = false;
        }

        private void bCalculate_Click(object sender, EventArgs e)
        {
            lli.Clear();

            lbMsg.Text = "";
            tResult.Clear();
            bResult.Enabled = false;
            tCount.Enabled = false;

            List<int> d = new List<int>();
            int len;
            int i = 0;

            try
            {
                if (string.IsNullOrEmpty(tNum.Text))
                {
                    MessageBox.Show("请输入数组。");
                    return;
                }

                string[] arrStr = tNum.Text.Split(',');
                foreach (string str in arrStr)
                {
                    int num = Convert.ToInt32(str);

                    if (d.Count == 0)
                        d.Add(num);
                    else
                    {
                        if (num < d[0])
                            d.Insert(0, num);
                        else if (num > d[d.Count - 1])
                            d.Add(num);
                        else
                        {
                            for (i = 0; i < d.Count - 1; i++)
                            {
                                if (num > d[i] && num < d[i + 1])
                                {
                                    d.Insert(i + 1, num);
                                    break;
                                }
                            }
                        }
                    }
                }
                len = d.Count;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            List<int> tmp = new List<int>();
            List<int> t = new List<int>();

            for (i = 0; i < len; i++)
            {
                tmp.Add(0);
                t.Add(d[i]);
            }

            int strCount = 0;
            while (t.Count == d.Count)
            {
                bool bFound = false;

                if (t.Count > 1)
                {
                    for (i = 0; i < t.Count - 1; i++)
                    {
                        if (t[i] == 0 && Math.Abs(t[i + 1]) > 1 || t[i + 1] == 0 && Math.Abs(t[i]) > 1)
                        {
                            bFound = true;
                            break;
                        }
                        else if (t[i] - t[i + 1] < -1 || t[i] - t[i + 1] > 1)
                        {
                            if (gcd(t[i], t[i + 1]) > 1)
                            {
                                bFound = true;
                                break;
                            }
                        }
                    }
                }

                if (!bFound)
                {
                    //lli.Add(t);
                    strCount++;

使用道具 举报

Rank: 2

积分
523
帖子
251
精华
1
UID
40010
性别
保密
25#
发表于 2014-1-6 15:03:28 |只看该作者
我给你发消息留言了

使用道具 举报

Rank: 4

积分
1206
帖子
1153
精华
0
UID
82168
性别
保密
居住地
其他
兴趣爱好
破解
理论
其它

八年元老 十年元老

24#
发表于 2014-1-6 14:35:17 |只看该作者
qiaoyisi 发表于 2014-1-6 14:31
好的,谢谢!

你的程序不是大概这样的么..
不知不觉这个号就申了四年多了吖..关键是还有密码登..
赶脚还有另一个号..也不造是哪个新点..

一眨眼都八年多了....

使用道具 举报

Rank: 2

积分
523
帖子
251
精华
1
UID
40010
性别
保密
23#
发表于 2014-1-6 14:31:17 |只看该作者
好的,谢谢!

使用道具 举报

Rank: 4

积分
1206
帖子
1153
精华
0
UID
82168
性别
保密
居住地
其他
兴趣爱好
破解
理论
其它

八年元老 十年元老

22#
发表于 2014-1-6 13:37:19 |只看该作者
qiaoyisi 发表于 2014-1-6 12:42
谢谢把程序发上来看看。

1到12的程序
实在没啥值得一提的..
不知不觉这个号就申了四年多了吖..关键是还有密码登..
赶脚还有另一个号..也不造是哪个新点..

一眨眼都八年多了....

使用道具 举报

Rank: 2

积分
523
帖子
251
精华
1
UID
40010
性别
保密
21#
发表于 2014-1-6 12:42:39 |只看该作者
谢谢把程序发上来看看。

使用道具 举报

Rank: 4

积分
1206
帖子
1153
精华
0
UID
82168
性别
保密
居住地
其他
兴趣爱好
破解
理论
其它

八年元老 十年元老

20#
发表于 2014-1-4 23:36:02 |只看该作者
qiaoyisi 发表于 2014-1-4 15:47
我算1~11不过几秒,1~12就是12!=479001600 算1秒能处理1000个排列,也要479001.6秒,即7983.36分钟,133.05 ...

1到12的..结果是476928么..
十二重循环..跑了48s..
需要的话我可以把程序贴上来..
(不过我觉得就是简单的循环而已..实在没啥贴的必要..)
(算法就相当于几个好多层循环好多个if而已..而我不是用正规的编程语言写的..所以格式相对比较不一样..这才是我不想贴上来的原因..)
不知不觉这个号就申了四年多了吖..关键是还有密码登..
赶脚还有另一个号..也不造是哪个新点..

一眨眼都八年多了....

使用道具 举报

Rank: 2

积分
523
帖子
251
精华
1
UID
40010
性别
保密
19#
发表于 2014-1-4 15:47:17 |只看该作者
我算1~11不过几秒,1~12就是12!=479001600 算1秒能处理1000个排列,也要479001.6秒,即7983.36分钟,133.056小时,需要我可以把我程序给你

使用道具 举报

Rank: 4

积分
1206
帖子
1153
精华
0
UID
82168
性别
保密
居住地
其他
兴趣爱好
破解
理论
其它

八年元老 十年元老

18#
发表于 2014-1-4 00:33:10 |只看该作者
qiaoyisi 发表于 2014-1-3 23:38
tm-xk能发个计算程序我邮箱吗?,我怎么计算1~12要用130多个小时,可能是算法有问题。

1到10的22032种..直接十重循环..每次都分别验证那一位..很快的吖..
算法很简单就不发了吧..(其实是因为我没有用正规的编程语言..不方便别人用..)

你说的130多个小时的是1到12?我没说我算过1到12的吖..不知道会不会很慢..
呃..如果你是想说1到10..笔误了的话..那130多个小时就太慢了..不至于是穷举10!种再验证吧..
等我看看同样方法开到12重能不能跑得动←_←

嘛..其实一般地..这就是个哈密顿路计数..没啥好再取巧的了吧..
不知不觉这个号就申了四年多了吖..关键是还有密码登..
赶脚还有另一个号..也不造是哪个新点..

一眨眼都八年多了....

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|魔方吧·中文魔方俱乐部

GMT+8, 2024-5-4 10:55

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部