ARC#032と他
昨日21:00~22:30まで行われたARCは駄目でした。というより、A問から解法が思いつかなかったです。
A問題は、要は「与えられた入力の階乗した数が素数か判別し、それぞれに合った文字列を出力する」ということなのですが、forループで素数判定を行おうとして(てかネットから探してきたやつを弄って)boolとか使ってたんだけど、結局入力が1のときだけAC貰えるようなやつしか作れませんでした。で、結果としてはAC数:0問でした。
一応、下のソースがACコード(コンテスト終了後の解説を見て(写して?)提出)
#include<iostream>
using
namespace
std;
int
main(
void
){
int
n;
cin >> n;
if
(n==2){
cout <<
"WANWAN"
<< endl;
}
else
{
cout <<
"BOWWOW"
<< endl;
}
return
0;
}
ソースコード見るとものすごく簡潔で、題意は上に要約した通りなんですが、これが総和の公式を用いて判定を行うため、解説スライドから、
S=1+2+...+N=N(N+1)/2が総和の公式
式からNが小さいことが自明で無いときは素数にならない(だろう)
特に、上記3つ目の予想(?)から、N=2の時だけ素数、それ以外は非素数であるため、それに従い出力するといえる。
ということはつまり、ifで分岐させる条件はn==2のみで良いので、ソースの通りでAcが貰えることになる。 …ということのようでした。解いてた時はこんな短いソースで終わるなんて想像すらしてませんでした...
さて、昨日と一昨日のAOJの駄ソースを投下
AOJ #10007
与えられた二数x,yを小さい方からソートする 最初 do~whilか科と思ったけど試しにwhile()でやったら通ったのでそのまんまに
#include<iostream>
using
namespace
std;
int
main(){
int
x,y,
tm
;
x=0;
y=0;
while
(1){
cin >> x >> y;
if
(x==0 && y==0)
break
;
if
(x>y){
tm
=x;
x=y;
y=
tm
;
}
cout << x <<
" "
<< y << endl;
}
return
0;
}
AOJ #10002
ITP1セットに収録の二数a,bから長方形の面積と形の長さを求める
#include<iostream>
using
namespace
std;
int
main(
void
){
int
a,b,sum,men;
cin >> a >> b;
men=a*b;
sum=a+a+b+b;
cout << men <<
" "
<< sum << endl;
return
0;
}
AOJ #0094
与えられるa,bから平方面積を求め、それを坪面積に換算する.最初constを使おうとしたけどなんか上手くいかなかったので関数内で定義することにした.
#include<iostream>
#include<cstdio>
int
main(){
int
a,b,m;
scanf
(
"%d %d"
,&a,&b);
double
S;
m=a*b;
S=m/3.305785;
printf
(
"%lf\n"
,S);
}
今日もなんらかの問題は1問は解きます(断言)。てか1時間に3~5問くらいのペースで解きたいんだけど頭が付いてきてくれないのが問題かと考えてたりします。