[白俊/c+]2428号:箸


質問リンク-https://www.acmicpc.net/problem/24228

[質問]



[回答]

  • は、まず入力条件で1<=N,R<=10^18となるので、範囲に注意する.
  • N:お箸タイプ、R:ペアリングが必要な数量
  • の最悪のケースは、それぞれ1つずつ取り、そのうちのいずれかのRペアに従ってペアリングすることである.
  • 簡単にするためにRペアだと思いますが、他の種類がそれぞれ1種類ある場合を考えます.(複数のタイプが2つのペアを満たし、他のタイプが1つずつある場合、答えは同じです)
    ->result=r*2+(n-1).
  • <c++データ型範囲>


    タイプ名バイト範囲(signed)int 4-24748368から21474836647符号なしint 40から4294967295 char 1-128-1227符号なしchar 10から255が短い、shor int 2-32768から32767676768(signed)long 8-92233720366847775808から92233720366854775807符号なしlong 80から184464073709551615 bool 1 tfloatまたはfalse 433.4 E+/-38(7桁)ダブル88 1.7 E+/-308(15桁)

    [コード]

    //24228번: 젓가락
    #include <iostream>
    using namespace std;
    
    long long func(long long n,long long r){
        // if(n==1)
        // return 2*r; //n=1일경우 별도의 처리를 해야될줄 알았는데 안해도 된다.
    
        long long result=0;
        result = r*2+(n-1);
        return result;
    }
    
    int main(){
        ios::sync_with_stdio(false);
        cin.tie(NULL);
        cout.tie(NULL);
         long long n,r;
        cin>>n>>r;
        cout<<func(n,r)<<"\n";
    }