ABC161
久しぶりの投稿。
営業からエンジニアに異動ができ、C#を使うことになったので、これからはC#でやっていきます!
まだ、初C#でゆっくりA問題からやっていったらだいぶ時間がかかったので、ざっくり書いていきます。
using System;
class Program{
public static void Main(){
var input = Console.ReadLine().Split(' ');
System.Console.WriteLine(input[2] + " " + input[0] + " " + input[1]);
}
}
慣れない形式でエラーばかりになるが、とりあえずクリア。
続いてB問題。
Aiの和を求めて、得票数の条件を満たしている商品数がM以上あればOK!
using System;
class Program{
public static void Main(){
var input = Console.ReadLine().Split();
int n = int.Parse(input[0]);
int m = int.Parse(input[1]);
input = Console.ReadLine().Split();
int[] a = new int[n];
int sum_a = 0;
for(int i=0; i<n; i++){
a[i] = int.Parse(input[i]);
sum_a += a[i];
}
int cnt = 0;
for(int i=0; i<n; i++){
if(a[i] > sum_a /(4*m)) cnt++;
else if(a[i] == sum_a /(4*m)){
if(sum_a % (4*m) == 0) cnt++;
}
}
if(cnt >= m) Console.WriteLine("Yes");
else Console.WriteLine("No");
}
}
A問題でも思ったけどC++に比べて入力がちょっとめんどい。文字列での入力になるから、自分で空白で区切らないといけないし、型も変換しないといけないっぽい。配列の宣言方法、変数の後じゃなくて型の後なんだ。
和を求めるのはループ回さなくても用意されているらしい。得票数の条件のところは整数型で分けたけど、小数使ってもよかったかも。
C問題。
NからKを引いていった余りと、その余りからもう一回Kを引いたものが、どちらが小さくなるかを見ていく。
using System;
class Program{
public static void Main(){
var input = Console.ReadLine().Split();
long n = long.Parse(input[0]);
long k = long.Parse(input[1]);
long m = n % k;
long ans = Math.Min(m,Math.Abs(m-k));
Console.WriteLine(ans);
}
}
プロパティってやつが慣れない。いちいち大文字だけど慣れると呼び出しやすいのかも。
D問題。
これは解けなかったー。全検索すると間に合わないし、おおよその桁数くらいまでは出せたけど、そこからどうしていいかがわからん。
解説見たらめちゃくちゃわかりやすくて感動した。解説を見て実装したのがこちら。
using System;
using System.Collections.Generic;
class Program{
public static void Main(){
int k = int.Parse(Console.ReadLine());
var que = new Queue<long>();
for(int i=1; i<=9; i++){
que.Enqueue(i);
}
long dq = 0;
for(int i=0; i<k; i++){
dq = que.Dequeue();
if(dq%10 != 0){
que.Enqueue(10*dq +(dq%10) -1);
}
que.Enqueue(10*dq +(dq%10));
if(dq%10 != 9){
que.Enqueue(10*dq +(dq%10) +1);
}
}
Console.WriteLine(dq);
}
}
キューを使って、取り出した数字に一桁加えてキューに戻す。0と9だけ桁が変わるから、それだけ省いてK番目に取り出したものが回答!
配列の末尾に入れていく形式でもよかったけど、わかりづらくなりそうなので止めました。キューはあんまり使い慣れてないのでBFS含めて要練習。using Systemだけだとキューは使えないみたいなので、そこらへんももう少し調べる。
Eも解きたかったけどだいぶ時間がかかったのでここまで。