[伯俊]1101:プラスサイクル


質問する


[Bronze I]正解率46%
https://www.acmicpc.net/problem/1110

の意見を打診

  • の複雑な演算->関数分離コード
  • を使用します.
  • (入力された数)と(関数の戻り値)を同じにします.
    (入力数)と(関数の戻り値)の比較
    2-1. 異なる場合は、ループ(繰り返し回数)+
  • (入力された数)と(関数の戻り値)が最初から同じなら?( if (cycle==0) cycle = 1 )
  • 学識


    問題は簡単で,大きな道理を学んでいない.複雑な演算は関数によって分離され、可読性の向上に役立ちますか?

    コード#コード#

    #include <stdio.h>
    
    int calculate(int num){
        int new=0;
        if(num<10)
            new = num;
        else
            new = (num/10 + num%10)%10;
            new += (num%10)*10;
        return new;
    }
    
    int main(void){
        int cycle = 0;
        int input = 0;
        int temp=0;
        scanf("%d", &input);
    
        while(input != temp){
            if(cycle == 0)
                temp = calculate(input);
            else
                temp = calculate(temp);
            cycle++;
        } 
     
        if(cycle==0)
            cycle = 1;
         
        printf("%d", cycle);
        return 0;
    }