9396 2024. 02. 21 12:36:02 Leventusz09 Táblajáték 2 (70 pont) csharp Hibás válasz 26/70 32ms 26808 KiB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Táblajáték_2{
    class Program{
        static void Main(){
            int K = int.Parse(Console.ReadLine());
            int[] S = Console.ReadLine().Split().Select(int.Parse).ToArray();

            //K = 80;
            //S = "1 0 2 1 0 2 1 0 2 4 3 2 3 2 5 5 0 2 0 3 0 2 4 5 4 0 5 5 5 2 4 4 2 3 4 4 0 4 3 3 0 3 5 4 3 0 2 2 1 1 4 4 2 1 3 0 0 1 3 0 3 1 3 2 5 5 4 2 2 3 2 5 4 0 0 5 4 3 4 1".Split().Select(int.Parse).ToArray();


            /*string o1 = "00";

            for(int i=0, l; i<K; i++){
                l = o1.Length;
                if (S[i] == 0) o1 += "0";
                else if (S[i] == 1) o1 += "1";
                else if (S[i] == 2) o1 += "2";
                else if (S[i] == 3) o1 = o1.Substring(0, l - 1);
                else if (S[i] == 4) 
                    
                    if (o1[l - 1] == '0') 
                        o1 = o1.Substring(0, l - 2) + (int.Parse(o1[l - 2] + "") - 1) + "2"; 
                    else 
                        o1 = o1.Substring(0, l - 1) + (int.Parse(o1[l - 1] + "") - 1);
                else 
                    if (o1[l - 1] == '2')
                        o1 = o1.Substring(0, l - 2) + (int.Parse(o1[l - 2] + "") + 1) + "0"; 
                    else 
                        o1 = o1.Substring(0, l - 1) + (int.Parse(o1[l - 1] + "") + 1);
            }
            int o2 = int.Parse(o1);*/

            int r = 0, c = 0;

            foreach(int i in S){
                if (i == 0){
                    r++;
                    c *= 3;
                }else if (i == 1){
                    r++;
                    c = c * 3 + 1;
                }else if (i == 2){
                    r++;
                    c = c * 3 + 2;
                }else if (i == 3){
                    r--;
                    c /= 3;
                }else if (i == 4){
                    c--;
                }else c++;
            }

            int o1 = 0;
            for (int i=(int)((Math.Log(c) / Math.Log(3))), t; i>=0 ; i--){
                t = (int)(c / Math.Pow(3, i));
                c -= t * (int)Math.Pow(3, i);
                o1 = o1 * 10 + t;
            }
            Console.WriteLine("{0}\n{1}", r, o1);
        }
    }
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 26/70
1 Elfogadva 0/0 32ms 22344 KiB
2 Hibás válasz 0/0 30ms 22548 KiB
3 Elfogadva 2/2 30ms 22760 KiB
4 Részben helyes 1/3 32ms 23364 KiB
5 Elfogadva 3/3 32ms 23668 KiB
6 Részben helyes 1/3 32ms 24240 KiB
7 Részben helyes 1/3 32ms 24168 KiB
8 Részben helyes 1/3 32ms 24768 KiB
9 Részben helyes 1/3 30ms 24940 KiB
10 Részben helyes 1/3 30ms 25068 KiB
11 Részben helyes 1/3 30ms 25204 KiB
12 Részben helyes 1/3 32ms 25308 KiB
13 Részben helyes 1/3 32ms 25772 KiB
14 Részben helyes 1/3 32ms 25488 KiB
15 Részben helyes 1/4 30ms 25484 KiB
16 Részben helyes 1/4 32ms 25908 KiB
17 Részben helyes 1/4 30ms 25960 KiB
18 Részben helyes 1/4 30ms 25964 KiB
19 Részben helyes 1/4 30ms 26272 KiB
20 Részben helyes 1/4 30ms 26616 KiB
21 Részben helyes 1/4 30ms 26808 KiB
22 Részben helyes 1/4 30ms 26312 KiB
23 Elfogadva 3/3 29ms 26188 KiB