読者です 読者をやめる 読者になる 読者になる

kotonoha_pcg@気ままに雑記

kotonoha_pcgが気分次第で様々な事を書き置きます.別館:http://tukdua.hatenadiary.jp/

掘り出しもの,ABC#020

ABC

 ドキュメント内を整理してたら出てきたので適当に書く.あとさっきやってたABC#020のA,Bも書く.

yukicoder

最初はyukicoder No.143 豆.なんかニコ生見ててその最中に思い出して適当にやろうと思って手をつけた.なお,公共広告機構を貰えるまで3~40分ほど格闘した模様(なんとか解答・解説を見ずにやれた).
以下ソース.

#include <iostream>
using namespace std;

int main() {
	
	int k,n,f,ans;
	int a[10000];
	ans=0;
	cin>>k>>n>>f;
	for(int i=0;i<f;i++){
		cin>>a[i];
		ans=ans+a[i];
	}
	
	if(k*n>=ans){
		cout<<k*n-ans<<endl;
	}else{
		cout<<"-1"<<endl;
	}
	return 0;
}

 問題としては,1袋K粒の豆がN袋あったとして,F人がそれぞれの年齢A(1~F)に応じて豆を食べ,食べ切れなかったら"-1"を出力する,というもの(たぶんこれで間違ってはいないはず).解法は・・・残念ながらおぼえていません(どうやって解いたのかすらほぼ覚えていない,なんか必死で図に纏めてたのは記憶にある).

ABC#020

 ここからはABC#020です.Aは久しぶりにSubmit画面でコーディングしてました.以下ソース羅列.

A

//ABC#020 A
#include<iostream>
using namespace std;
int main(){
	int q;
	cin>>q;
	if(q==1){
		cout<<"ABC"<<endl;
	}else{
		cout<<"chokudai"<<endl;
	}
	return 0;
}

 解法が問題文に書いてあったので放棄した.AC.

B

 こちらは解説スライドを写して書きました.

//ABC#020 B
#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;

int main(){
	string a,b;
	cin>>a>>b;
	string ab=a+b;
	int q=atoi(ab.c_str());
	cout<<q*2<<endl;
	return 0;
}

 こちらはAとは打って変わって,どうやっても考え方は当たってるのに変数かどっかがおかしいんだろうなー,と思って(コンテスト自体を)放棄した.終了後に解説スライドを見てstring型で変数宣言すればいいことに気付いて泣きました(割と).もうちょっとよく検討しないといけないと思う.解法は,二数A,Bに入力された数値に対し,A,B双方を足して二倍してやる,とても簡単なお仕事です.

まとめ

 最近問題解いてないのがよく分かったコンテストでした.C,Dは余裕があれば書くかもしれません.