国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

判斷是否是完全平方數(shù)[容易]和排列箱子[容易]

這篇具有很好參考價值的文章主要介紹了判斷是否是完全平方數(shù)[容易]和排列箱子[容易]。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

1.1.1.?完全平方數(shù)(PerfectSquare)

判斷正整數(shù)y是否是完全平方數(shù)。如果能找到正整數(shù)x,使得x*x==y,則y是平方數(shù)。

1.?思路

條件

處理

x*x>y

丟棄右半部分

x*x==y

y是完全平方數(shù)

x*x<y

丟棄左半部分

x的取值范圍是[1,y],我們用左閉右開空間,就是[1,y+1)。

注意:計(jì)算過程要注意溢出。

擴(kuò)展:如果y是自然數(shù)呢?y可以為0

?文章來源地址http://www.zghlxwxcb.cn/news/detail-546275.html

代碼

?

#include <iostream>
#include <vector>

bool IsPerfectSquare(int y )
{
    int left = 1, right = y + 1;
    while (right - left > 1)
    {
        int x = left + (right - left) / 2;
        if (x * x == y)
        {
            return true;
        }
        else if (x * x > y)
        {
            right = x;
        }
        else
        {
            left = x;
        }
    }
    return left * left == y;
}
int main()
{
    std::vector<int> v;
    for (int i = 1; i < 1000; i++)
    {
        if (IsPerfectSquare(i))
        {
            v.emplace_back(i);
        }
    }
    for (const auto& n : v)
    {
        std::cout << n << " ";
    }
}

1.1.1.?排列箱子

n個箱子,求可以排列多少行(包括不完整行)。第一行1個箱子,第二行2個箱子...ii個箱子。注意:最后一行可能沒滿,除最后一行外其他行全滿。

1.?解題思路

m行排滿,共有maxN= m*(1+m)/2個箱子。

m行只排一個,共有minN = maxN-m+1個箱子。

如果n小于minN,則拋棄右邊;

如果n大于maxN,則拋棄左邊。

邊界[1,n],左閉右開空間是[1,n+1)

?

代碼

?

#include <iostream>
#include <assert.h>

?

int BoxLeve(int n)
{
int left = 1, right = n + 1;
while (right - left > 1)
{
int mid = left + (right - left) / 2;
int maxN = (1 + mid)* mid / 2;
int minN = maxN - mid + 1;
if (n < minN)
{
right = mid;
}
else if (n > maxN)
{
left = mid;
}
else
{
return mid;
}
}
return left;
}
int main()
{
assert(1 == BoxLeve(1));
assert(3 == BoxLeve(4));
assert(3 == BoxLeve(5));
assert(3 == BoxLeve(6));
assert(4 == BoxLeve(7));
assert(4 == BoxLeve(10));
//assert(51 == BoxLeve(11));
}

?

?

  

?

到了這里,關(guān)于判斷是否是完全平方數(shù)[容易]和排列箱子[容易]的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包