L 1-4チャンピオンマジック(10点)2020/11/15エレベーターシミュレーション問題_C言語_二つの方法
7552 ワード
2018年FISM(世界マジック大会)近景総優勝のジェーン・レンティンの演技には、デスクトップのテープを境に、テープの片側から反対側にカードを押すと、カードがコインになるというストーリーがあった.コインを反対側に押し戻すとカードになります.ここではカードが等量のコインになり、コインがカードになるとカードの数が倍になると仮定します.では、カードの初期数を指定して、N回押した後、手に持っているのはカードですか、コインですか.数量はいくらですか.入力フォーマット:1行に2つの正の整数を入力します.それぞれカードの初期数とマジシャンがプッシュした回数です.ここでは初期状態でマジシャンの手にカードがいっぱいあると仮定します.出力フォーマット:最後にマジシャンの手にカードがあれば、0とカードの数を出力します.硬貨の場合、1と硬貨の数を出力します.数字の間には1つのスペースが必要です.タイトル保証結果の数値は整数範囲(すなわち2 31−1)を超えない.サンプル1を入力:
3 7
出力サンプル1:
1 24
入力サンプル2:
8 4
出力サンプル2:
0 32
解法一
以下は出力方式の簡単な方法です
超すごい解法二位演算
自分に注意して入力データの大きな問題に遭遇した場合、cin coutを使用しないでください.scanfより何倍も長いのでタイムアウトの問題が発生します.
3 7
出力サンプル1:
1 24
入力サンプル2:
8 4
出力サンプル2:
0 32
解法一
#include
#include
using namespace std;
int main()
{
int cnt,time;
cin>>cnt>>time;
for(int i=1;i<=time;i++)
{
if(i%2==0) // i!!
cnt=cnt*2;
}
if(time%2==0)
cout<<'0'<<" "<<cnt;
else cout<<'1'<<" "<<cnt;
return 0;
}
以下は出力方式の簡単な方法です
#include
#include
using namespace std;
int main()
{
int cnt,time;
cin>>cnt>>time;
for(int i=1;i<=time;i++)
{
if(i%2==0) // i!!
cnt=cnt*2;
}
cout<<time%2<<" "<<cnt;//
return 0;
}
超すごい解法二位演算
#include
using namespace std;
int main() {
int a, b;
cin>>a>>b;
a<<=(b>>1);
cout<<(b&1)<<" "<<a<<endl;
return 0;
}
自分に注意して