分解整數(shù)

2022-08-07 09:00

1個(gè)回答
講思路不擅長啊...大體是這樣了:
如15而言,外循環(huán)i從1到7,針對(duì)每一個(gè)i,都計(jì)算從它開始的連續(xù)和值,等于15了就輸出一行.你還是看下偽代碼吧:
n=15;
for(i=1;i<=n/2;i++)
{
sum=0;
for(j=i;j<=n/2+1;j++)
{
sum+=j;
if(sum==n)
{
for(k=i;k<=j;k++)
printf("%d ",k);
printf("\n");
break;
}
}
}

好吧..我重新研究了下,發(fā)現(xiàn)你的數(shù)據(jù)規(guī)模太大了,如果按上面的算法,效率非常低,改進(jìn)了算法,如下:

思路:
如15,有3種情況,一種是2個(gè)數(shù)字:7,8,一種是3個(gè)數(shù)字:4,5,6,一種是5個(gè)數(shù)字:1,2,3,4,5;
我們先求得每種情況的平均值,如情況2的:15/3=5,然后就可以列出4,5,6了.
我們發(fā)現(xiàn),如果是偶數(shù)個(gè)數(shù)字,如2個(gè)數(shù)字,平均值15/2=7.5,小數(shù)部分必然是0.5,這可以想象得到.
而奇數(shù)個(gè)數(shù)字的情況,如3個(gè)數(shù)字,15/3=5,平均值必然是整數(shù).這也可以想象得到.
如是有以下算法:
long i,n,sqrtn,first;
scanf("%ld",&n);
sqrtn=(int)sqrt(n*2); //第t行
for(i=2;i<=sqrtn;i++)
{
first=n/i-(i-1)/2;
if((float)n/i-n/i==(i+1.0)/2.0-(i+1)/2 && first>0) //第s行
{
printf("%ld+...+%ld (%ld)",first,first+i-1,i);
}
printf("\n");
}
}

如注釋處,第s行代碼為關(guān)鍵代碼(float)n/i-n/i==(i+1.0)/2.0-(i+1)/2即平均值的情況,這里也可以用求余.first>0即所有項(xiàng)必須為正整數(shù).
第t行代碼,連續(xù)正整數(shù)個(gè)數(shù)小于sqrt(N*2);這個(gè)可以從高斯求和公式推出來.
相關(guān)問答
成語有什么整整
1個(gè)回答2024-02-14 22:28
規(guī)規(guī)整整,只是一個(gè)詞語,不是成語和規(guī)規(guī)整整類似的成語有:日日夜夜、期期艾艾、熙熙攘攘、兢兢業(yè)業(yè)、浩浩蕩蕩、影影綽綽、林林總總、戰(zhàn)戰(zhàn)兢兢、渾渾噩噩、唯唯諾諾、郁郁蔥蔥、洋洋灑灑、朝朝暮暮、形形色色、卿卿...
全文
我愛你整整十年 另類詞
1個(gè)回答2023-04-30 01:31
愛你不止三五年
整整一天咋叫也叫不起
1個(gè)回答2024-03-14 14:49
病情分析:你好,一般小孩子脾胃比較虛弱,也可能是缺鈣,也可能是家長沒有給予良好的睡眠習(xí)慣。 指導(dǎo)意見:經(jīng)常曬曬太陽,給孩子多吃一些易消化的輔食,均衡飲食,注意各個(gè)階段應(yīng)補(bǔ)充的維生素等營養(yǎng)物質(zhì),家長也要...
全文
聽說你愛了他整整一個(gè)曾經(jīng)
1個(gè)回答2024-03-20 11:57
聽說你如今已沒有曾經(jīng)那么愛了。
什么是整十整五的加法
1個(gè)回答2024-09-12 05:46
整十整五的加法就是指把各個(gè)加數(shù)看做個(gè)位數(shù)為0或者5來計(jì)算,比如28+36,可以化為:28+36=(25+3)+(35+1)=25+35+3+1=64,再比如12+31=(10+2)+(30+1)=10...
全文
有沒有整人的笑話?整了人 那人還得笑的!
1個(gè)回答2024-01-20 07:18
如果遇見熊你怎么辦? A,跑得比熊快。 B。跑得和熊一樣快。 C, 跑得比熊慢。 選A的人比禽獸還禽獸?!? 選B的人就是禽獸。 選C的人禽獸不如。 Q:人為什么要走去床上睡...
全文
請(qǐng)問大家有沒有那些年電影的完整版,記得!是完整版哦~
1個(gè)回答2023-03-08 21:51
快播,暴風(fēng)都有吧
《把愛傳下去》為什么會(huì)整整感動(dòng)全美十年?
1個(gè)回答2024-06-20 19:08
片子是不錯(cuò)~ 但那也遠(yuǎn)沒“感動(dòng)10年”那么夸張~ 國外不興CCTV那一套~~
我愛你愛了整整一個(gè)曾經(jīng)我還會(huì)繼續(xù)愛你整整一個(gè)未來是哪個(gè)小說里男主說的
1個(gè)回答2024-03-03 23:29
這段話選自《寫給未來戀人的情書:最后的故事》 故事的女主角娜娜在死去前給男主郭敖說的一句話
熱門問答