78822024-01-11 17:52:08ananászSorozat generáláscsharpElfogadva 50/50118ms31200 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();
        }
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/035ms22632 KiB
2Elfogadva0/0105ms27968 KiB
3Elfogadva2/235ms23008 KiB
4Elfogadva2/237ms23504 KiB
5Elfogadva2/237ms23368 KiB
6Elfogadva2/237ms23628 KiB
7Elfogadva2/239ms24500 KiB
8Elfogadva4/441ms24728 KiB
9Elfogadva4/450ms25092 KiB
10Elfogadva4/467ms26284 KiB
11Elfogadva4/468ms26592 KiB
12Elfogadva4/482ms27356 KiB
13Elfogadva4/4105ms29460 KiB
14Elfogadva4/4101ms29024 KiB
15Elfogadva4/4105ms31100 KiB
16Elfogadva4/4115ms30892 KiB
17Elfogadva4/4118ms31200 KiB