abc 019 C - 高橋くんと魔法の箱
問題概要
省略
解法
2倍したものは同じものとしてみなせるため、まずすべての数字を2で割れるだけ割る。そのあと、数字の種類が答えとなる。
ミス
なし。
コード
#include <iostream> #include <cstdio> #include <vector> #include <set> #include <algorithm> using namespace std; typedef long long ll; #define rep(i,n) for(int i=0;i<(n);i++) const int INF = 1e9; int main(void){ int n; cin >> n; vector<ll> v(n); rep(i, n) cin >> v[i]; set<int> s; rep(i, n){ while(v[i] % 2 == 0){ v[i] /= 2; } s.insert(v[i]); } printf("%d\n", s.size()); return 0; }