0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Paiza Cランク獲得問題(Dランク相当) ループメニュー2

Posted at

paizaのCランク獲得問題の解答がなかったので、備忘録として残します。
明らかに簡単な問題の場合は省略しますが、個人的に少しでも考えたコードを残していきたいと思います。
初心者ですので醜いコードを書きますが、温かい目で見守っていただけると嬉しいです。
また、より良い記述方法などありましたら、コメント等で教えていただけると嬉しいです。

目次

  • 未知数個の数の受け取り
  • 奇数だけ出力
  • カウント変数を使った計算
  • 2 で何回割れる?
  • 10 進数から 2 進数に変換
  • 10 進数から M 進数に変換
  • N が M ずつ増えたときにいつ K を越える?
  • 毎日増加するお金
  • 階乗の計算
  • 階乗の末尾に 0 はいくつ付く?
  • 加算された数列の最大値
  • 1 はどこにある?
  • 約数の個数
  • 約数の列挙

未知数個の数の受け取り

問題文

using System;
using System.Linq;

class Program
{
    public static void Main()
    {

        int []a=Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
        foreach(var result in a){
            Console.WriteLine(result);
        }
    }
}

題意は満たしていません。分からなかったです。。
次の問題も同じです。

奇数だけ出力

問題文

using System;
using System.Linq;

class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int []a=Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
        for(int i=0;i<N;i++){
            if(a[i]%2==1){
                Console.WriteLine(a[i]);
            }
        }
    }
}

割り切れる数だけ出力もほぼ同じです。
偶奇の判定もやること同じです。

各桁の和

問題文

using System;


class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int sum=0;
        while(0<N){
            sum+=(N%10);
            N=(N/10);
        }
        Console.WriteLine(sum);
    }
}


調べて出てきました
10で割った余りが1の位の値になり、商をNに置き換える
これを繰り返すと各桁の和を計算することが出来る。

2 で何回割れる?の問題もこの考えで解けます。

カウント変数を使った計算

問題文

using System;
using System.Linq;

class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int []M=Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
        for(int i=0;i<N; i++){
            Console.WriteLine(M[i]*(i+1));
        }
    }
}


2 で何回割れる?

問題文

using System;

class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int count=0;
        while(N%2==0){
            N=(N/2);
            count++;
        }
        Console.WriteLine(count);
    }
}

任意の数で何回割れる?も同じです。

10 進数から 2 進数に変換

問題文

using System;

class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        string N2=Convert.ToString(N,2);
        Console.WriteLine(N2);
    }
}

Convertを使いました、題意に沿っていません。

10 進数から M 進数に変換

問題文

using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        string []NM=Console.ReadLine().Split();
        int N=int.Parse(NM[0]);
        int M=int.Parse(NM[1]);
        List<int> list =new List<int>();
        while(N>0){
            list.Add(N%M);
            N=N/M;
        }
        list.Reverse();
        foreach(int result in list)  {
            Console.Write(result);
        }
    }
}

N が M ずつ増えたときにいつ K を越える?

問題文

using System;

class Program
{
    public static void Main()
    {
        string []NMK=Console.ReadLine().Split();
        int N=int.Parse(NMK[0]);
        int M=int.Parse(NMK[1]);
        int K=int.Parse(NMK[2]);
        int count=0;
        while(N<=K){
            N=N+M;
            count++;
        }
        Console.WriteLine(count);
    }
}


毎日増加するお金

問題文

using System;

class Program
{
    public static void Main()
    {
        string []AB=Console.ReadLine().Split();
        int A=int.Parse(AB[0]);
        int B=int.Parse(AB[1]);
        
        int count=0;
        while(A<=B){
            int increase=(int)(A*0.1);
            A+=increase;
            count++;
        }
        Console.WriteLine(count);
    }
}


階乗の計算

問題文

using System;

class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int result=1;
        for(int i=1;i<=N;i++){
            result*=i;
        }
        Console.WriteLine(result);
    }
}


階乗の末尾に 0 はいくつ付く?

問題文

using System;
using System.Collections.Generic;
class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int count=0;
        for(int i=5;i<=N;i++){
            int num=i;
            while(num%5==0){
                count++;
                num/=5;
            }
        }
        Console.WriteLine(count);
    }
}

5が何個あるか数えるのと同義です。

加算された数列の最大値

問題文

using System;
using System.Linq;
class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int []a=Console.ReadLine().Split().Select(int.Parse).ToArray();
        int []result =new int[N];
        for(int i=0;i<N;i++){
            result[i]=a[i]+i+1;
        }
        Console.WriteLine(result.Max());
    }
}


加算された数列の最小値もやることは同じです

1 はどこにある?

問題文

using System;
using System.Linq;
class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int []a=Console.ReadLine().Split().Select(int.Parse).ToArray();
        for(int i=0;i<N;i++){
            if(a[i]==1){
                Console.WriteLine(i+1);
            }
        }
    }
}


約数の個数

問題文

using System;

class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        int count=0;
        for(int i=1;i<=N;i++){
            if(N%i==0){
                count++;
            }
        }
        Console.WriteLine(count);
    }
}


約数の列挙

問題文

using System;

class Program
{
    public static void Main()
    {
        int N=int.Parse(Console.ReadLine());
        
        for(int i=1;i<=N;i++){
            if(N%i==0){
                Console.WriteLine(i);
            }
        }
        
    }
}


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?