今天在朋友圈看到一個(gè)問題:
有個(gè)東西他的期限只有30天 然后你只有180塊錢 去買這個(gè)東西之后你每天能領(lǐng)十塊錢.等到你18天之后你又可以買這個(gè)東西買了之后你又可以每天領(lǐng)十塊錢葡缰。如此累計(jì)要多久自己的手上才能有八個(gè)這樣的東西.(注意每個(gè)東西期限只有30天)
我想了一下似乎可以用計(jì)算機(jī)解決,然后就自己用算法實(shí)現(xiàn)了一下闸氮,用到了循環(huán)和容器
代碼如下
int money = 180;//初始錢
vector<int> product;//購買產(chǎn)品的容器
int day = 0;//天數(shù)
while (product.size() < 8)
{
for (vector<int>::iterator i = product.begin(); i != product.end();)
{
if (*i < 1)
{
i = product.erase(i);
}
else
{
money += 10;
(*i)--;
++i;
}
}
while (money >= 180)
{
for (int i = 0; i < money / 180; i++)
{
product.push_back(30);
}
money = money % 180;
int index = 0;
for (int leftDay : product)
{
if (leftDay == 30)
{
money += 10;
product[index]--;
}
index++;
}
}
day++;
CCLOG("%ddays have money::%d,the number of financial products is%d", day, money, product.size());
}
CCLOG("the %d days have 8 financial products", day);
根據(jù)我們輸出我們可以看到第59天會(huì)得到8個(gè)鹅心;
image.png