[題解](水/數學)luogu_P1147連續自然數和

尺取法a掉

然而數學解法為

等差數列求和公式:

sum(L,R)=(L+R)(R-L+1)/2=M

(L+R)(R-L+1)=2M

可以把2M分解成两个数之积,假设分成了两个数K1,K2,且K1<K2时,

可以列一个二元一次方程组

R-L+1=K1

L+R=K2 解得L=(K2-K1+1)/2, R=(K1+K2-1)/2

当K1,K2一奇一偶时,L,R才有自然数解.

不过有一种特殊情况,就是L=R的情况,这种情况是不允许的

即(K2-K1+1)/2≠(K1+K2-1)/2,解得K1≠1

尺取瞎搞:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int m;
int main(){
    scanf("%d",&m);
    int i=0,j=0,sum=0;
    while(i+j<m){
        while(sum<m)j++,sum+=j;
        while(sum>m)sum-=i,i++;
        if(sum==m)printf("%d %d\n",i,j),j++,sum+=j;
    }
    if(i+j==m)printf("%d %d\n",i,j);
}

數學(題解

#include<bits/stdc++.h>
using namespace std;
int m;
int main(){
    cin>>m;
    for(int k1=sqrt(2*m);k1>1;k1--)//枚举k1(注意是k1>1而不是k1>=1)
        if(2*m%k1==0 && (k1+2*m/k1)%2){//如果K2是整数而且与K1一奇一偶
            int k2=2*m/k1;
                cout<<(k2-k1+1)/2<<" "<<(k1+k2-1)/2<<endl;//输出答案
        }
    return 0;
}

原文地址:https://www.cnblogs.com/superminivan/p/10878153.html

时间: 2024-10-10 20:19:15

[題解](水/數學)luogu_P1147連續自然數和的相关文章

DevExpress的GridControl控件更新數據問題解決辦法

開發WPF程序時,使用Devexpress的GridControl控件用ItemSource綁定數據,在頁面進行編輯時,當屬性繼承INotifyPropertyChanged接口時會同步更新後臺數據.今天在開發時遇到一種情況,當通過GridControl中Row上Button[Command]改變行內數據,也就是binding的Detail數據已改變,這時NotifyPropertyChanged有觸發,但改變的行數據不會同步更新到UI上,目前測試有兩種方式進行解決. 1.直接new 一個新的行

[亂數] &lt;細說&gt; C/C++ 亂數基本使用與常見問題

陸陸續續寫了 EA  一.二年,以前亂數引導文回頭看時才發現,怎麼有這麼多細節的錯誤.沒系統. 這篇文章主要引導初學者使用亂數,同時附上常被翻出來討論的議題,C/C++適用,唯以 C 語言撰之. 也由於是引導初學者,所以在某些用詞上會較不正確, 像 compiler.IDE 會故意混為一談. 另外亂數原理也全都跳過 < 重點是亂數的產生原理也不只一種 >. 另本文附程式碼,不附執行結果,有興趣自己跑一遍. 最後請注意本文在區間表達裡,開區間與閉區間 括號的使用,也就是, [a, b]  ,  

Word 中的橫式格式方程式和數學自動校正

以橫式格式輸入方程式 您可以使用數學自動校正程式碼,迅速輸入大多數的方程式.例如,若要對齊方程式陣列,您可以使用 @ 和 &,如下所示: \eqarray(x+1&[email protected]+2+3+y&[email protected]/x&=6)<空格> 解析成: 以下是其他一些範例: 範例 橫式格式 內建格式 向量 (abc)\vec<空格><空格>   (abc)\hat<空格><空格> 方塊化公式

[題解](二分答案/單調隊列)luogu_P1419尋找段落

果然又抄的題解... 顯然答案具有單調性,而對于平均數計算的式子我們移一下項, 若s[l..r]>mid*(r-l+1)无解, 於是我們把每個數都減去一個mid,看和的正負即可,如果為正就可能有更大的平均數, 求子串和最大值可以用單調隊列維護, #include<bits/stdc++.h> using namespace std; const int maxn=100010; int n,s,t; double a[maxn],sum[maxn]; int b[maxn],q[maxn

單反數碼相機和普通數碼相機的區別 !

數碼單鏡頭反光DSLR(Digital Single Lens Reflex)照相機,簡稱數碼單反相機.在這種系統中,反光鏡和棱鏡的獨到設計使得攝影者可以從取景器中直接觀察到通過鏡頭的影像.單鏡頭反光照相機的構造圖中可以看到,光線透過鏡頭到達反光鏡後,折射到上面的對焦屏並結成影像,透過接目鏡和五棱鏡,我們可以在觀景窗中看到外面的景物 光通過透鏡 (1),被反光鏡(2)反射到磨砂取景屏(5)中.通過一塊凸透鏡(6) 並在五棱鏡(7)中反射,最終圖像出現在取景框(8)中.當按下快門,反光鏡沿箭頭所示

ASP.NET MVC Identity 兩個多個連接字符串問題解決一例

按照ASP.NET MVC Identity建立了一個用戶權限管理模塊,由于還要加自己已有的數據庫,所以建立了一個實體模型,建立了之后,發現登錄不了: 一直顯示"Login in failed for user 'sa',後來發現不是用戶名和密碼不對,而是連接字符串的問題,按屬性里複製的連接字符串沒有包括Initial Catalog=MISWeb, 所以有時正常,有時提示登錄錯誤. 多個連接字符串ConnectionString可以同時存在.包括同一服務器,同一用戶名,同一數據庫.

[題解/考試]國王飲水記

前言:今日又考試了,一道斐波那契的入門題因為沒有特判0錯了一個點,兩道不會,結果連rk7.8都沒拿到, 前天把鉛筆盒丟掉了,裡面有筆,耳機和U盤.U盤裡有做過的題,一些模板,寒假講的東西和課件,6個遊戲,一些安裝包和一些網址. 發現丟掉以後就變得特別絕望,極度悲傷,可是這就是命運啊,你不接受那就去死好了. 人活著本來就沒有什麼意義可言,尋找意義自然也是不可能尋找到的了. 意義什麼的都是小孩子的事情,所以只能這樣活著了. 與其如此那還不如把U盤裡的東西裝到腦子裡,也不必擔心什麼了. n個點,按順序

[題解](狀壓/水)luogu_P1879玉米田

大水題然而因為智障的錯誤调了半天......n,m别反着输入啊......內外循環和狀態數都不等價 别的就是記錄一下每一行不可行的點,也狀壓一下,dp的時候判一下即可 #include<bits/stdc++.h> using namespace std; const int mod=100000000; int n,m,tot; int f[15][1<<12+1],c[1<<12+1]; int can[15]; int main() { scanf("%

[題解]luogu_P1144最短路計數

1.無權圖最短路邊權為1 2.如果兩個點恰好不能被更新(d[y]==d[x]+1)那麼就能通過x的所有最短路到達y,所以ans[y]+=ans[x] 3.如果兩個點不能恰好被更新(d[y]>d[x]+1)那麼到達y的最短路目前只有通過x到達,所以ans[y]=ans[x] #include<iostream> #include<cstdio> #include<queue> #include<cstring> using namespace std;