名侦探柯南事务所

标题: 两步猜出多项式的各项系数 [打印本页]

作者: b.p.bravo    时间: 2011-1-9 16:36
提示: 作者被禁止或删除 内容自动屏蔽
作者: 工藤¥新一    时间: 2011-1-9 21:54
嘛。。第一步应该是。输入1
然后得出系数和M
第二步么……不知道了……感觉和10有点关系吧。算了算。。
是10的M次还是M的10次。。
或者是得出M之后,再算出M的位数S
然后再10的S次?……
= =好吧。。不知道。。
求答案。

作者: 工藤¥新一    时间: 2011-1-9 21:57
补充一个,刚想到的。
或者是10的S+1次方?……
好吧。。等于没说。。。求答案啊!!!
作者: yangti1674    时间: 2011-1-9 22:03
先输入x=1,输出的结果为各项系数之和a[sub]0[/sub]+a[sub]1[/sub]+...+a[sub]n[/sub]的值;
再随意输入一个满足x>a[sub]1[/sub]+a[sub]2[/sub]+...+a[sub]n[/sub]的x值,将输出的结果连续除以x取余数,各余数即为各项系数。

如,输入x=1,结果为12;
再输入x=100,结果为30405;
则a[sub]2[/sub]=3,a[sub]1[/sub]=4,a[sub]0[/sub]=5。

作者: b.p.bravo    时间: 2011-1-9 22:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: yangti1674    时间: 2011-1-10 02:16
是啊 差不多的想法 3L大概也是这个思路吧
作者: yylxxch    时间: 2011-1-11 15:26
既然已经解决了我就不再重复答案了...
上面两位的想法本质一样,数的进制转化算法即是连除取余。
羊角想的只差一步,利用代入10的某一次方,可以有效的将各项系数分割显示并保留原来的模样,不过如果原系数本身就是10的倍数,则确定起来会有较大的麻烦==
作者: b.p.bravo    时间: 2011-1-11 15:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: yylxxch    时间: 2011-1-11 15:55
b.p.bravo 发表于 2011-1-11 15:34
没有什么麻烦的
就是进制转换中的连除取余法的直接应用

那本意“直接看出”各项系数就不能实现了。
作者: b.p.bravo    时间: 2011-1-11 15:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: 工藤¥新一    时间: 2011-1-11 16:07
嘛。那我想的没错= =。。
文科生对数学表示压力巨大= =……
不太相信而已。。。。

作者: yylxxch    时间: 2011-1-11 17:57
b.p.bravo 发表于 2011-1-11 15:57
本来就没有说要直接看出嘛
直接看出这钟东西是很不可靠的

刚才想歪了一些,其实还是可以直接看出的。
第一步得到全部系数和,假设为n位数,则表明最大的一个系数也不超过n位。
代入10^n,所得结果由末位起每n位一断,每一段刚好对应一个系数。
试验系数组(1,10,0,3),系数和为14,两位数。
则代入10^2,所得结果分段后为1,10,00,03
所用的恰好就是对“10的倍数”取余的简便性,不必再进行复杂的连除。

作者: 金圭子    时间: 2011-1-17 15:01
yylxxch 发表于 2011-1-11 15:26
既然已经解决了我就不再重复答案了...
上面两位的想法本质一样,数的进制转化算法即是连除取余。
羊角想的 ...

和“系数本身是10的倍数”无关,其实只要是系数大于x就很麻烦了,比如多项式是101x+1,你x用了100,出来的是10101,你怎么知道是x^2+x+1,还是101x+1呢。

所以要进化一下:先输入1,比如给出S,这样可以判断出系数最大的不会超过S(因为都是正整数么,如果有负数就难说了),然后给出一个大于S的10的倍数中最小的一个(比如S是987,就是1000,如果S是1001,就是10000),然后代入,就可以了……

作者: b.p.bravo    时间: 2011-1-17 15:40
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 名侦探柯南事务所 (https://bbs.aptx.cn/) Powered by Discuz! X2.5