1. 程式人生 > 其它 >你聽說過史萊姆嗎??【oj】

你聽說過史萊姆嗎??【oj】

技術標籤:oj演算法c++

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; }