Программные реализации подсчёта счастливых билетов
Материал из Викиучебника
[править] C++
#include<fstream.h> #include<process.h> void main() { ofstream out; out.open("LuckyTicket.txt",ios::out); int i1,i2,i3,i4,i5,i6,count=0; for(i1=0;i1<10;i1++) for(i2=0;i2<10;i2++) for(i3=0;i3<10;i3++) for(i4=0;i4<10;i4++) for(i5=0;i5<10;i5++) for(i6=0;i6<10;i6++) if(i1+i2+i3==i4+i5+i6) { out<<i1<<i2<<i3<<" "<<i4<<i5<<i6<<"\n"; count++; } out<<"Number of lucky tickets is "<<count<<endl; out.close(); }
[править] Ruby
n = 2 # 2n — кол-во цифр в билете a = Array.new(n*9 + 1, 0) ('0'*n..'9'*n).each do |s| sum = 0 s.each_byte {|c| sum += c - 48 } a[sum] += 1 end count = a.inject {|x, sum| x + sum**2 } puts "Number of lucky tickets: #{count}"
[править] Pascal
Program bilet; Var s,a,b,v,z,i:integer; {s-количество счастливых билетов, a-сумма последних трех чисел, b-сумма первых трех чисел} Begin s:=1; {учитываем билет с номером 000000} for i:=1 to 999999 do {перебираем билеты от 000001 до 999999} begin v:=i; z:=0; while z<3 do begin z:=z+1; a:=v mod 10 +a; v:=v div 10 end; {считаем сумму последних трех чисел} while z<6 do begin z:=z+1; b:=v mod 10 +b; v:=v div 10 end; {считаем сумму первых трех чисел} if a=b then s:=s+1; a:=0; b:=0; end; writeln(s); end.