AtCoder Beginner Contest 080を解きました

AtCoder Beginner Contest 080を解きました
いうてもD問題がまだ解けない
==
A問題
A: Parking - AtCoder Beginner Contest 080 | AtCoder

#include<stdio.h>
 
int main()
{
  int res,N,A,B,p1,p2;
  scanf("%d %d %d",&N,&A,&B);
  p1 = A * N;
  p2 = B;
  res = p1 > p2 ? p2 : p1;
  printf("%d\n",res);
  return 0;
}

printf("%d\n", A*N > B ? B : A*N)
でよかったかも

B問題
B: Harshad Number - AtCoder Beginner Contest 080 | AtCoder

    #include<stdio.h>
     
    int digitsum(int N)
    {
      if(N == 0)
        return 0;
      else
        return ((N % 10) + digitsum(N / 10));
     
    }
     
    int hjd(int N)
    {
      if(N % digitsum(N) == 0)
        return 1;
      else
        return 0;
    }
     
    int main()
    {
      int N;
      scanf("%d",&N);
      switch(hjd(N)){
      case 0 :
        printf("No\n");
        break;
      case 1 :
        printf("Yes\n");
        break;
      default :
        printf("Error\n");
        break;
      }
      return 0;
    }

関数作りすぎたかも

C問題
C: Shopping Street - AtCoder Beginner Contest 080 | AtCoder

    #include<stdio.h>
    int N,F[101][6][3],P[101][11];
    int max(int x, int y)
    {
      return x > y ? x : y;
    }
    int daynum(int n,int day[11])
    {
      int i,j,res=0;
      for(i=1;i<=5;i++)
        for(j=1;j<=2;j++)
          res += day[2*(i-1)+j]*F[n][i][j];
      return res;
    }
     
    int isZero(int day[11])
    {
      int i;
      for(i=1;i<=10;i++)
        if(day[i] != 0)
          return 0;
      return 1;
     
    }
     
    int rieki(int day[11],int date){
      if(date == 11){
        int n,res=0;
        if(isZero(day))
          return -2000000000;
        for(n=1;n<=N;n++)
          res += P[n][daynum(n,day)];
        return res;
      }else{
        int i,d1[11],d2[11];
        for(i=1;i<=10;i++)
          d1[i] = d2[i] = day[i];
        d1[date] = 1;
        d2[date] = 0;
        return max(rieki(d1,date+1),rieki(d2,date+1));
      }
    }
     
    int main()
    {
      int day[11],i,j,k,res;
      scanf("%d",&N);
      for(i=1;i<=N;i++)
        for(j=1;j<=5;j++)
          for(k=1;k<=2;k++)
            scanf("%d",&F[i][j][k]);
      for(i=1;i<=N;i++)
        for(j=0;j<=10;j++)
          scanf("%d",&P[i][j]);
      for(i=0;i<=10;i++)
        day[i] = 0;
      printf("%d\n",rieki(day,1));
      return 0;
    }

関数めちゃくちゃ作りすぎました。
長々と書いてますがやってることは1024通りのパターンを潰しているだけです。一日も営業しない日を潰さなくてはいけないので、day配列がすべて0のときだけありったけの小さい数を返すようにしました。

D問題ができたらまた書きます。