78802024-01-11 17:50:55ananászSorozat generáláscsharpAccepted 50/5054ms26428 KiB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace sorozat_generalas
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] st = Console.ReadLine().Split();
            int M = int.Parse(st[0]);
            int x = int.Parse(st[1]);//kezdőszám
            int A = int.Parse(st[2]);
            int B = int.Parse(st[3]);
            int N = int.Parse(st[4]);//lépések száma
            int K = int.Parse(st[5]);
            List<int> sorozat = new List<int>();
            long akt = x;
            string s = "";
            int ismetlodik = 0;
            for (int i = 0; i < N; i++)
            {
                akt = akt * A + B;
                s = akt.ToString();
                s = s.Remove(s.Length - M);
                while (s.Length > 2 * M)
                {
                    s = s.Remove(0, 1);
                }
                akt = int.Parse(s);
                if (!sorozat.Contains((int)akt))
                {
                    sorozat.Add((int)akt);
                }
                else
                {
                    ismetlodik = (int)akt;
                    break;
                }
            }
            /*int id = 0;
            List<int> rendezett = new List<int>(sorozat);
            while (sorozat[0] != ismetlodik)
            {
                sorozat.RemoveAt(0);
                id++;
            }
            Console.WriteLine(sorozat.Count);
            id = 0;
            for (int i = rendezett.Count; i < N; i++)
            {
                if (id==sorozat.Count)
                {
                    id = 0;
                }
                rendezett.Add(sorozat[id]);
                id++;
            }
            rendezett=rendezett.OrderByDescending(y => y).ToList();
            
            Console.WriteLine(rendezett[K-1]);*/
            int id = 0;
            List<int> eleje = new List<int>();
            while (sorozat[id] != ismetlodik)
            {
                eleje.Add(sorozat[id]);
                id++;
            }
            ismetlodik = sorozat.Count - id;//hány ismétlődik
            Console.WriteLine(ismetlodik);
            List<int> rendezett = new List<int>(sorozat);
            int kimaradt = N - sorozat.Count;
            int ismdb = kimaradt / (ismetlodik)+1;//ennyiszer ismétlődik utána teljesen
            kimaradt = (kimaradt) % (ismetlodik);//ennyi maradt még utána
            List<int> maradek = new List<int>();
            for (int i = id; i < kimaradt+id; i++)
            {
                maradek.Add(sorozat[i]);
            }
            rendezett = rendezett.OrderByDescending(y => y).ToList();
            int keresett = 0;
            id = 0;
            for (int i = 0; i < rendezett.Count; i++)
            {
                if (maradek.Contains(rendezett[i]))
                {
                    id += ismdb + 1;
                }
                else if (eleje.Contains(rendezett[i]))
                {
                    id++;
                }
                else
                {
                    id += ismdb;
                }
                if (id >= K)
                {
                    keresett = rendezett[i];
                    break;
                }
            }
            
            Console.WriteLine(keresett);
            Console.ReadKey();
        }
    }
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/035ms22096 KiB
2Accepted0/043ms23224 KiB
3Accepted2/235ms23184 KiB
4Accepted2/235ms23216 KiB
5Accepted2/237ms23696 KiB
6Accepted2/237ms23964 KiB
7Accepted2/235ms24340 KiB
8Accepted4/435ms24500 KiB
9Accepted4/437ms24872 KiB
10Accepted4/437ms25096 KiB
11Accepted4/437ms25188 KiB
12Accepted4/437ms24924 KiB
13Accepted4/450ms25892 KiB
14Accepted4/450ms25704 KiB
15Accepted4/446ms26064 KiB
16Accepted4/450ms26124 KiB
17Accepted4/454ms26428 KiB