78862024-01-11 17:57:40ananászSorozat generáláscsharpElfogadva 50/50119ms32240 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 teljesen
            kimaradt = (kimaradt) % (ismetlodik);  //ennyi maradt még az utolsó ismétlődés után
            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/037ms22080 KiB
2Elfogadva0/0108ms27764 KiB
3Elfogadva2/235ms22744 KiB
4Elfogadva2/239ms23404 KiB
5Elfogadva2/237ms23580 KiB
6Elfogadva2/237ms24208 KiB
7Elfogadva2/241ms24244 KiB
8Elfogadva4/441ms24632 KiB
9Elfogadva4/448ms25164 KiB
10Elfogadva4/467ms26672 KiB
11Elfogadva4/467ms26936 KiB
12Elfogadva4/479ms27992 KiB
13Elfogadva4/4107ms29900 KiB
14Elfogadva4/4103ms29812 KiB
15Elfogadva4/4104ms31700 KiB
16Elfogadva4/4115ms31444 KiB
17Elfogadva4/4119ms32240 KiB