AtCoder ABC-161 A - ABC Swap

グラブルで古戦場が始まってしまったので今日は1問だけ...(しかもA問題)

atcoder.jp

方針

変数の入れ替えですね、tmp変数用意して入れ替えます。
(ネットでswap関数コピーしてくるのが手っ取り早い)

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

using namespace std;
#define lli long ling int;

int main()
{
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);

    // a, b swap
    int tmp = 0;
    tmp = a;
    a = b;
    b = tmp;

    // a, c swap
    tmp = a;
    a = c;
    c = tmp;

    cout << a << " " << b << " " << c <<endl;

    return 0;
}

AtCoder ABC-162 C - Sum of gcd of Tuples (Easy) /

atcoder.jp

方針

3つの整数に対してユークリッドの互除法を使いました。
3重ループは時間がかかるので非推奨ですが...

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

using namespace std;
#define lli long ling int;

int gcd(int a, int b)
{
    int r;
    r = a % b;
    while(r!=0) {
        a = b;
        b = r;
        r = a % b;
    }
    return b;
}

int main()
{
    long long int K, sum = 0;
    scanf("%lld", &K);

    for (int i = 1; i <= K; i++) {
        for (int j = 1; j <= K; j++) {
            for (int k = 1; k <= K; k++) {
                // i,j,k gcd
                int a, b, c, d, tmp;
                a = i;
                b = j;
                c = k;
                if (a < b) {
                    tmp = a;
                    a = b;
                    b = tmp;
                }
                d = gcd(a, b);

                if (c < d) {
                    tmp = c;
                    c = d;
                    d = tmp;
                }
                int res = gcd(c, d);
                sum += res;
            }
        }
    }

    printf("%lld\n", sum);

    return 0;
}

AtCoder ABC-162 B - FizzBuzz Sum

atcoder.jp

方針

FizzBuzz!!
FizzとBuzz以外を足していきました。オーバーフロー対処にはlong long int使いました笑

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

using namespace std;
#define lli long ling int;

int main()
{
    long long int N, sum = 0;
    scanf("%lld", &N);

    for (long long int i = 1; i <= N; i++) {
        if (i % 3 == 0)
            continue;
        
        if (i % 5 == 0)
            continue;

        sum += i;
    }

    printf("%lld\n", sum);

    return 0;
}

AtCoder ABC-162 A - Lucky 7

atcoder.jp

方針

商と余りに着目。余りが7だったらYes。
入力の仕様が3桁だったので同じ処理を2回書きました...

#include <stdio.h>
#include <stdlib.h>
#include <iostream>

using namespace std;
#define lli long ling int;

int main()
{
    int N;
    scanf("%d", &N);

    int a, b;
    a = N / 10;
    b = N % 10;
    if (b == 7) {
        printf("Yes\n");
        return 0;
    }

    b = a % 10;
    a /= 10;
    if (b == 7) {
        printf("Yes\n");
        return 0;
    }

    b = a % 10;
    if (b == 7) {
        printf("Yes\n");
        return 0;
    }
    
    printf("No\n");

    return 0;
}

AtCoder ABC-151 C問題Welcome to AtCoder

atcoder.jp

方針

ACに着目して条件分岐。ACになる過程でWAをカウントアップしていきました。
そして対象の問題がACになってたらcontinue。
ぼくはACとWAに関するテーブル(初期値-1)を作成してACになったらFLAG[p[i]-1][0]=1にして解きました。

#include <stdio.h>
#include <bits/stdc++.h>
#include <iostream>

using namespace std;

int main()
{
  int n,m, ac=0, wa=0;
  scanf("%d %d", &n, &m);

  int p[m], flag[n][2];
  char s[m][3];

  for(int i=0;i<m;i++) {
    scanf("%d %s", &p[i], s[i]);
  }
  for(int i=0;i<n;i++) {
    flag[i][0] = 0; flag[i][1] = 0;
  }

  for(int i=0;i<m;i++) {
    if(flag[p[i]-1][0]==1) {
      continue;
    }

    if(strcmp(s[i], "WA")==0) {
      flag[p[i]-1][1]+=1;
    }
    if(strcmp(s[i], "AC")==0) {
      flag[p[i]-1][0]=1;
      wa+=flag[p[i]-1][1];
    }

  }

  for(int i=0;i<n;i++) {
    //printf("%d %d\n", flag[i][0], flag[i][1]); 
    if(flag[i][0]>=1){
      ac+=1;
    }
  }

  printf("%d %d\n", ac, wa); 

  return 0;
}

AtCoder ABC-151 B問題Achieve the Goal

atcoder.jp

方針

あと何点とればいいのか、なので逆算して求めることができます。
X = M*N-(a[0]+ … +a[i-1])みたいな感じ...
あとはXが満点を超えてないかとか0点でもいいのかについて条件分岐してあげるだけ。

#include <stdio.h>
#include <bits/stdc++.h>
#include <iostream>

using namespace std;

int main()
{
  int m,k,n;
  scanf("%d %d %d", &n, &k, &m);

  int tmp[n-1];
  for(int i=0;i<n-1; i++)
    scanf("%d", &tmp[i]);

  int t_s = 0, ans;
  for(int i=0; i<n-1; i++)
    t_s += tmp[i];

  ans = m*n-t_s;
  if (ans > k){
    cout << "-1" << endl;
    return 0;
  }
  if (ans <= 0){
    cout << "0" << endl;
    return 0;
  }
   
  cout << ans << endl;

  return 0;
}