はい。
https://atcoder.jp/contests/abc112
A - Programming Education
n=int(input())
if n==1:
print("Hello World")
exit()
a=int(input())
b=int(input())
print(a+b)
#include<bits/stdc++.h>
using namespace std;
#define sc1(a) scanf("%d",&a)
int main(){
int n,a,b;
sc1(n);
sc1(a);
sc1(b);
if (n==1) printf("Hello World\n");
else printf("%d\n",a+b);
return 0;
}
問題文の指示通りに。
B - Time Limit Exceeded
n,t=map(int,input().split())
ans=chk=10000
for i in range(n):
x,y=map(int,input().split())
if y<=t: ans=min(ans,x)
print(ans if ans<10000 else "TLE")
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define sc2(a,b) scanf("%d %d",&a,&b)
int main(){
int n,m,t,ans=11111;
sc2(n,t);
rep(i,n) {
int a,b;
sc2(a,b);
if (t>=b) ans=min(ans,a);
}
if (ans==11111) printf("TLE\n");
else printf("%d\n",ans);
return 0;
}
時間とコストを確認する。
C - Pyramid
n=int(input())
x,y,h=map(int,input().split())
d=set([(x,y,h)])
t=[x,y,h]
for i in range(n-1):
x,y,h=map(int,input().split())
d.add((x,y,h))
if t[2]==0: t=[x,y,h]
for i in range(101):
for j in range(101):
f=0
p=abs(t[0]-i)+abs(t[1]-j)+t[2]
for k in d:
if k[2]!=0 and abs(k[0]-i)+abs(k[1]-j)+k[2]!=p: f=1
if k[2]==0 and abs(k[0]-i)+abs(k[1]-j)+k[2]<p: f=1
if f==0:
print(i,j,p)
exit()
#include<bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<n;++i)
#define sc1(a) scanf("%d",&a)
#define sc3(a,b,c) scanf("%d %d %d",&a,&b,&c)
int ww[105][5];
int main(){
int n,a,b,c;
sc1(n);
rep(i,n) {
sc3(ww[i][0],ww[i][1],ww[i][2]);
if(ww[i][2]>0) {a=ww[i][0];b=ww[i][1];c=ww[i][2];}
}
rep(i,101) rep(j,101) {
bool f=1;
int h=c+abs(i-a)+abs(j-b);
rep (k,n) {
if (max(0,h-abs(i-ww[k][0])-abs(j-ww[k][1]))!=ww[k][2]) f=0;
}
if (f) printf("%d %d %d\n",i,j,h);
}
return 0;
}
x,yそれぞれ0から100までの全座標を中心と仮定して調べても間に合うらしい。入力中のとある1件を基準として中心地点の高さも仮定するようにした。但し、高さを仮定する際に基準とする高さが0の場合に遠すぎて見えない場合も高さは負の値ではなく0となっていて計算がずれるので解が合わなくなるので注意。
D - Partition
n,m=map(int,input().split())
for i in range(m//n,0,-1):
if m%i==0:
print(i)
break
#include<bits/stdc++.h>
using namespace std;
#define sl2(a,b) scanf("%lld %lld",&a,&b)
int main(){
long long n,m,ans=1;
sl2(n,m);
vector <long long > w;
for (long long i=1;i*i<=m;i++) {
if (m%i==0) {
w.push_back(i);
w.push_back(m/i);
}
}
for(auto x:w) if (n*x<=m) ans=max(ans,x);
printf("%lld\n",ans);
return 0;
}
Pythonの方はn=2で出来るだけ大きい素数とかだとTLEしそうに見えるけど間に合うのかこれ。。
C++の方は真面目に書きました。解でMは割り切れるはずだと思います。1からMを割り切れる数を集めます。1とMも含めたいので1から探します。適当に配列に入れます。計算してMを超えないものをよしなに探して解を求めます。