結果

問題 No.278 連続する整数の和(2)
ユーザー itezpaceitezpace
提出日時 2016-10-25 09:32:45
言語 C++11
(gcc 11.4.0)
結果
CE  
(最新)
AC  
(最初)
実行時間 -
コード長 627 bytes
コンパイル時間 561 ms
コンパイル使用メモリ 57,240 KB
最終ジャッジ日時 2023-08-24 22:48:14
合計ジャッジ時間 925 ms
ジャッジサーバーID
(参考情報)
judge12 / judge11
このコードへのチャレンジ(β)
コンパイルエラー時のメッセージ・ソースコードは、提出者また管理者しか表示できないようにしております。(リジャッジ後のコンパイルエラーは公開されます)
ただし、clay言語の場合は開発者のデバッグのため、公開されます。

コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:35:8: error: ‘pow’ was not declared in this scope
   ll c=pow(2,b);
        ^~~
main.cpp:35:8: note: suggested alternative: ‘putw’
   ll c=pow(2,b);
        ^~~
        putw

ソースコード

diff #

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
typedef long long ll;
int main(){
  ll N=0;cin>>N;
  ll a=N;
  ll b=0;
  if(N%2==0){
    while(1){
      if(a%2!=0){
        break;
      }
      a/=2;
      b+=1;
    }
  }
  if(a>1){
    vector<ll> v;
    for(ll i=3;i*i<=a;i+=2){
      if(a%i==0){
        v.push_back(i);
        v.push_back(a/i);
      }
    }
    sort(v.begin(),v.end());
    auto result=unique(v.begin(),v.end());
    v.erase(result,v.end());
    for(ll i=0;i<v.size();++i){
      a+=v[i];
    }
  }
  if(N>2) a+=1;
  ll c=pow(2,b);
  c-=1;
  if(c>0) a*=c;
  cout<<a<<endl;
}
0