| 
 1 тур Волинської учнівської оілмпіади з програмування Задача 1. Число з однакових цифр  Нехай в калькулятор введемо деяке натуральне число N. Натиснемо клавішу +. Ваше завдання: отримати на екрані число яке складається з однакових цифр. Для цього можна виконувати тільки одну дію: натискувати клавішу = (можливо і 0 раз). Після першого натискування отримаємо результат N+N, після наступного натискування результат збільшується на N. Потрібно визначити, чи можна виконати це завдання. Якщо можна, то визначити перше число яке складається з однакових цифр. Кількість цифр які може відображати калькулятор вважати необмеженою. 
 #include "fstream" using namespace std; 
ifstream cin("input.txt"); ofstream cout("output.txt"); 
int main() {long long n,i,b,c,k,j,t; cin>>n; long long f=0,s=0; int x[1000]; while(f==0 && s<=10000000){  s=s+n;  t=s;i=0;  while(t>0){  i++;  x[i]=t%10;  t=t/10;  }  b=0; //for(j=1; j<=i; j++)cout<<x[j]<<" ";cout<<endl;  for(j=1; j<i; j++){  if(x[j]!=x[j+1])b=1;  }  if(b==0){  f=1;  c=x[1]; k=i;}   } if (f==1) cout<<c<<" "<<k<<endl; else cout<<"Impossible"<<endl;  return 0; } #include <fstream> using namespace std; int main() {  ifstream cin("input.txt"); ofstream cout("output.txt");  unsigned long long s,n,temp; long i1,c1,c2,k; int f=0; cin>>n; s=n; do {f=0; temp=s; c2=temp%10; k=0; while (temp>0 && f==0) {c1=temp%10; k++; //cout<<c1<<" "<<k<<endl; if(c1!=c2)f=1;  temp=temp/10;  c2=c1; } if (f==0) f=2; s=s+n; } while (f!=2 && s<1000000000); if (f==2) cout<<c1<<" "<<k<<endl; else cout<< "Impossible"<<endl;  return 0; }  #include <fstream> #include <math.h> using namespace std; int main() {  ifstream cin("input.txt"); ofstream cout("output.txt"); 
unsigned long long s[10],n,temp; long i,c,k; int f=0; cin>>n; k=0; for (i=1;i<=9;i++)s[i]=0; while (f==0 && s[9]<17446744073709551615) { 
for (i=1;i<=9;i++)  {  s[i]=s[i]*10+i;  if (s[i]%n==0){f=1;c=i;break;}  // cout<<s[i]<<"------------"<<i<<"---"<<k<<endl;  }  k++; } if (f==1) cout<<c<<" "<<k<<endl; else cout<< "Impossible"<<endl;  return 0; } #include "fstream" using namespace std; ifstream cin("input.txt"); ofstream cout("output.txt"); int a[10][2001], f, n, i,k, x, y, j,st; int main() {  cin>>n; f=0,i=0; while(f==0 && i<=1000) { i++; for(j=1; j<=9; j++) { a[j][i]=j; st=0; for(k=1;k<=i;k++)st=(st*10+a[j][k])%n; if(st==0){x=a[j][1]; y=i;f=1;break;} } } if (f==1) cout<<x<<" "<<y<<endl; else cout<<"Impossible"<<endl; return 0; } 
Задача 2. I-й шлях у таблиці  Задано таблицю N*M, у кожній клітинці якої написана одна рядкова буква англійського алфавіту. Розглянемо всі можливі шляхи від лівого верхнього кутка до правого нижнього кутка, якщо вам дозволено йти тільки вправо і вниз. Конкатенація букв у процесі руху утворює рядок. Будемо вважати, що цей рядок – значення шляху. Тепер розглянемо всі такі шляхи і відсортуємо їх значення в алфавітному порядку. Ваше завдання: знайти значення I-го шляху в цьому відсортованому списку. 
 void p(int k,int i0,int j0) {int x,y; c[k]=a[i0][j0]; 
if(i0==n-1 && j0==m-1){ 
  if(ii==nomer-1){  for(int i=0;i<n+m-1;i++){cout<<c[i];}  cout<<endl; } 
ii++; } 
else { if(i0<n-1)p(k+1,i0+1,j0); if(j0<m-1 )p(k+1,i0,j0+1); 
} 
 Завдання 1 туру NetOI-2015 (16.10-11.11) 2015 р.      Розв'язки приймаються до  0 годин 12 листопада 2015 р.  
 |