Решение задачи "Кто выпьет n-ю Double Cola" - C#
Формулировка задачи:
string[] names = new string[] { "Sheldon", "Leonard", "Penny", "Rajesh", "Howard" }; int n = 1; Line.WhoIsNext(names, n) --> "Sheldon" int n = 6; Line.WhoIsNext(names, n) --> "Sheldon" int n = 52; Line.WhoIsNext(names, n) --> "Penny" int n = 7230702951; Line.WhoIsNext(names, n) --> "Leonard"
static string Foo(string[] names, long n) { var result = Enumerable.Range(1, names.Length) .Select((m, i) => new { m, i }) .ToDictionary(x => x.i, x=> (long)1); long k = 0; while (n>0) result = result.Select(i => { if (n > 0) { n -= i.Value; if (n > 0) k = i.Key + 1 > names.Length - 1 ? 0 : i.Key + 1; } return i.Value * 2; }) .Select((m, i) => new { m, i }) .ToDictionary(x => x.i, x => x.m); return names[k]; }
Может кто предложит более простой способ =)
Решение задачи: «Решение задачи "Кто выпьет n-ю Double Cola"»
textual
Листинг программы
program p1; var a,b,k,l,d,e:integer; c:boolean; label l1; begin write('Type a, please '); readln(a); a:=(abs(a)); write('Type b, please '); readln(b); If b>0 then begin k:=0; l:=0; repeat d:= (a mod 10); e:= (b mod 10); c:=(d=e); If C then begin k:=(d+k); l:=(e+l); a:=(a div 10); b:=(b div 10); end else begin writeln('Не входит'); goto l1; end; until b=0; Writeln('Входит'); l1: end else writeln('Вы офигели!! Отрицательных цифр в записе числа не бывает!') end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д