poj 2100 尺取法連續平方和

2021-07-04 07:27:07 字數 846 閱讀 6430

題意:

給乙個數 n (1e14)。

求一段連續的數的數字,使得其平方和等於n。

輸出的時候,先輸出有多少組,然後每組的開頭輸出有多少個元素,然後輸出這些元素。

解析:尺取法。

需要注意的地方是s和t要從1開始,否則wa。

**:

#include #include #include #include #include #include #include #include #include #include #include #include #define ll long long

using namespace std;

const int inf = 0x3f3f3f3f;

const double eps = 1e-8;

const double pi = 4 * atan(1.0);

const double ee = exp(1.0);

const int maxn = 10000 + 10;

vector> ans; // fr <-> to

void solve(ll n)

// if (sum < n)

// break;

if (sum == n)

sum -= s * s;

s++;

}int sz = ans.size();

printf("%d\n", sz);

for (int i = 0; i < sz; i++)

puts("");

}}int main()

return 0;

}

POJ 2100(尺取法 巢狀pair)

題意 結界給出乙個數n。你要求一段連續的數,這些數的平方和等於n。input 輸入乙個整數n,1 n 10 14 output 輸出乙個數k,k為解的個數。接下來的k行為解,每一行的解要先輸出這個解中包含的數字個數,然後從小到大輸出解中包含的數字。解的輸出順序要按照所包含的數字個數降序排列。samp...

poj 2100 尺取法(尺度法)

給你乙個數n,然後找到乙個連續的序列,使得這個序列中的數的平方和等於n。輸出需要注意的是第一行為解的個數,剩下的每行先輸出序列的長度,然後輸出序列。按照序列的長度進行降序輸出。沒啥好說的,使用尺度法,進行列舉各個區間上的數。需要注意的是數字1的答案為 1 1 1 include include in...

POJ2566(尺取法 字首和)

題意 給出乙個整數列,求一段子串行之和最接近所給出的t。輸出該段子序列之和及左右端點。思路 做這道題其實是沒思路的,看了大佬的題解後學習到了。一般來說,我們必須要保證數列單調性,才能使用尺取法。預處理出前i個數的字首和,和編號i一起放入pair中,然而根據字首和大小進行排序。由於abs sum i ...