你聽說過史萊姆嗎??【oj】
阿新 • • 發佈:2021-02-10
Description
Input
Output
inpu 5
output 1
input 8
output 0
分析:
如果只有小Q一個人的話,就會有1,2,4,8,16,32,,,等情況,是以二的指數增長
然後用小Q想要對的軍隊數對小Q一個人可能繁衍的數遍歷除,以找到最優的情況,及小Q佔了大多數軍隊數,而剩餘的軍隊數量單憑小Q無法實現,此時就需要邀請另一位史萊姆來幫他實現了,當然也終究會到請來的史萊姆也解決不了的時候,這時候就需要再請一位。。。以此類推,直到解決為止
下面是我的程式碼,以供參考
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
#include <list>
#include <vector>
typedef long long ll;
using namespace std;
int main ()
{
std::ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
ll n;
cin >> n;
vector<int> v;
for (ll i = 1; i <= 1000000000; i = i * 2) {
v.push_back(i);
}
int sum = 0;
while (n) {
for (int i = 0; i < v.size(); i++) {
if (n / v[i] == 1) {if (n % v[i] == 0) {
n = 0;
break ;
}
n = n % v[i];
sum++;
break;
}
}
}
cout << sum << endl;
return 0;
}