
Энд дарж орно уу.
#include <stdio.h>
//#include <conio.h>
int b[1002];
int find(int i){
int s=1,k,t;
k=i;
while (b[k]!=i){
/*printf("%d %d\n",s,k);
getch();*/
t=b[k];
b[k]=0;
k=t;
s++;
}
b[k]=0;
return s;
}
long xbeh(long x,long y){
int s=x*y;
while(x!=0 && y!=0){
if (x>y) x=x%y;
else y=y%x;
}
if (x==0) x=y;
s/=x;
return s;
}
int main(){
int n,a[1002],i;
long x=1,y;
scanf("%d",&n);
for (i=1;i<=n;i++) {
scanf("%d",&b[i]);
//b[i]=a[i];
}
for (i=1;i<=n;i++){
if (b[i]!=0) {
y=find(i);
//printf("%ld %ld ",x,y);
x=xbeh(x,y);
}
}
printf("%ld",x);
return 0;
}
#include <stdio.h>
int main()
{
int n, i, j, t, k, p;
double x[100], y[100];
scanf("%d", &n);
for (i=0; i<n; i++)
scanf("%lf %lf",&x[i], &y[i]);
for (p=0,i=0; i<n; i++)
for (j=i+1; j<n; j++,t=0)
{
for (k=0; k<n; k++)
if (k!=i && k!=j)
if ((y[k]-y[i])*(x[j]-x[i])-(y[j]-y[i])*(x[k]-x[i])>0)
t++;
if(t*2==n-2)
p++;
}
printf("%d", p);
return 0;
}
#include <stdio.h>
#include <string.h>
main()
{
int arab=0;
char num[50];
scanf("%s",num);
for(int i=0; i<strlen(num); i++)
{
if(num[i]=='M' && num[i-1]=='C') arab+=900;
if(num[i]=='D' && num[i-1]=='C') arab+=400;
else if(num[i]=='D') arab+=500;
if(num[i]=='C' && num[i-1]=='X') arab+=90;
else if(num[i]=='C' && num[i+1]!='M' && num[i+1]!='D') arab+=100;
if(num[i]=='L' && num[i-1]=='X') arab+=40;
else if(num[i]=='L') arab+=50;
if(num[i]=='X' && num[i-1]=='I') arab+=9;
else if(num[i]=='X' && num[i+1]!='C') arab+=10;
if(num[i]=='V' && num[i-1]=='I') arab+=4;
else if(num[i]=='V') arab+=5;
if(num[i]=='I' && num[i+1]!='V' && num[i+1]!='X') arab++;
}
printf("%d\n",arab);
return 0;
}
#include <stdio.h>
int main()
{
long a, b, n;
scanf("%ld",&n);
for (;n>0; n--)
{
scanf("%ld %ld", &b, &a);
while (a>0)
{
if (a%10 == b%10)
b/=10;
a/=10;
}
if (b==0)
puts("YES");
else
puts("NO");
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
using namespace std;
int main(){
unsigned long long N;
cin>>N;
if(N<=2){printf("NO\n");}
unsigned long long fac=1,i;
for(i=1;i<=N;i++){
fac *= i;
}
for(i=1;i<sqrt((double)fac);i++){
if(i*(i+1)*(i+2) == fac){printf("YES");system("PAUSE");return 0;}
}
printf("NO");
/*if(Result>0){printf("YES\n");}
else{printf("NO\n");}*/
system("PAUSE");
return 0;
}
#include <iostream>
#include <algorithm>
using namespace std;
typedef struct{
long long x;
long long y;
}T;
T D[60001],Queue[160001];
long long Dis[160001],DisTemp[160001],QLab[160001],QPos[160001],Pre[160001],Next[160001];
long long N,Q,DC,Head;
void InitQueue(void){
long long i;
for(i=1;i<DC;i++){
Queue[i].x=Dis[i];
Queue[i].y=Dis[i+1]-1;
}
for(i=1;i<DC;i++){
Pre[i]=i-1;
Next[i]=i+1;
}
}
void Init(void){
long long i;
scanf("%ld",&N);
for(i=1;i<=N;i++){
scanf("%ld %ld",&D[i].x, &D[i].y);
DisTemp[i*3-1]=D[i].x;
DisTemp[i*3-2]=D[i].x+1;
DisTemp[i*3]=D[i].y;
}
DisTemp[N*3+1]=1;
DisTemp[N*3+2]=1000000001;
sort(DisTemp+1,DisTemp+N*3+2);
DisTemp[0]=0;
DC=0;
for(i=1;i<=N*3+2;i++)
if(DisTemp[i]!=DisTemp[i-1]){
++DC;
Dis[DC]=DisTemp[i];
}
InitQueue();
}
long long Find(long long x){
long long St,Ed,Mid;
St=1;
Ed=DC-1;
while(St<=Ed){
Mid=(St+Ed)/2;
if((Queue[Mid].x<=x)&&(Queue[Mid].y>=x))return Mid;
if(Queue[Mid].x>x)Ed=Mid-1;
else St=Mid+1;
}
}
long long Find2(long long *x){
long long St,Ed,Mid,y;
y=1;
St=1;
Ed=DC-1;
while(St<=Ed){
Mid=(St+Ed)/2;
if(QLab[QPos[Mid]]>=*x)
Ed=Mid-1;
else{
y=Mid;
St=Mid+1;
}
}
*x-=QLab[QPos[y]];
return QPos[y];
}
void Solve(void){
long long x,y,i,j,Sum;
char Ch[100];
Head=1;
for(i=1;i<=N;i++){
x=Find(D[i].x);
y=Find(D[i].y);
if(y==Head)Head=x;
else if(x==Head)Head=Next[x];
Pre[Next[x]]=Pre[x];
Next[Pre[x]]=Next[x];
Pre[x]=Pre[y];
Next[x]=y;
Next[Pre[y]]=x;
Pre[y]=x;
}
j=Head;
Sum=0;
for(i=1;i<DC;i++){
QLab[j]=Sum;
QPos[i]=j;
Sum+=(Queue[j].y-Queue[j].x+1);
j=Next[j];
}
scanf("%ld",&Q);
for(i=1;i<=Q;i++){
scanf("%s %ld",Ch,&x);
if(Ch[0]=='L'){
y=Find2(&x);
printf("%ld\n",Queue[y].x+x-1);
}
else{
y=Find(x);
printf("%ld\n",QLab[y]+x-Queue[y].x+1);
}
}
}
int main(){
Init();
Solve();
return 0;
}
#include<iostream.h>
main()
{
long a,b,i,x,n;
cin>>n;
a=1;
b=1;
i=3;
while(i<=n)
{
x=b;
b=(a+b)%10;
a=x;
i++;
}
if (i<3) cout<<1<<endl;
else cout<<b<<endl;
}
#include<iostream>
#include<cmath>
using namespace std;
typedef struct pointdef
{
int x,y;
}point;
typedef struct trandef
{
point p[3];
}tran;
long trana(int x1, int y1, int x2, int y2, int x3, int y3)
{
return abs(x1*y2-x2*y1+x2*y3-x3*y2+x3*y1-x1*y3);
}
int check(tran t, int x, int y)
{
if(trana(t.p[0].x,t.p[0].y,t.p[1].x,t.p[1].y,t.p[2].x,t.p[2].y)==trana(x,y,t.p[1].x,t.p[1].y,t.p[2].x,t.p[2].y)+trana(t.p[0].x,t.p[0].y,x,y,t.p[2].x,t.p[2].y)+trana(t.p[0].x,t.p[0].y,t.p[1].x,t.p[1].y,x,y)) return 1;
return 0;
}
int main()
{
int n,i,j,k;
int x1,y1,x2,y2,x3,y3;
tran t[10];
cin>>n;
for(i=0; i<n; i++)//buh tsegee avah uildel
{
cin>>x1>>y1>>x2>>y2>>x3>>y3;
t[i].p[0].x=x1;//gurvaljind onooh
t[i].p[0].y=y1;
t[i].p[1].x=x2;
t[i].p[1].y=y2;
t[i].p[2].x=x3;
t[i].p[2].y=y3;
}
int m,_max=0;
for(i=0; i<n; i++) //shalgah
{
for(j=0; j<3; j++)
{
m=0;
for(k=0; k<n; k++) m=m+check(t[k],t[i].p[j].x,t[i].p[j].y);
if(m>_max) _max=m;
}
}
cout<<_max;
return 0;
}
#include <cstdio>
#include <vector>
#include <algorithm>
#include <iostream>
#include <map>
using namespace std;
char convert(char c){
if (c>='a'&&c<='z') return (char)(c-'a'+'A');
else return c;
}
string p;
int reads(){
p="";
int i;
for (;;)
{
i=getchar();
if (i==' '||i=='\t'||i=='.'||i==',') break;
else if (i=='\n') return 1;
else if (i==EOF) return 2;
else if (i=='-') p=p+'-';
else if (i>='a'&&i<='z') p=p+(char)(i-'a'+'A');
else if (i>='A'&&i<='Z') p=p+(char)i;
}
return 0;
}
int main(){
int i,n,k;
map <string, int > m;
scanf("%d\n",&n);
for (i=0;i<n;i++)
{
reads();
//printf("%s\n",p.c_str());
m[p]=1;
}
string s;
n=0;
do{
i=reads();
if (i==1&&p.length()>0&&p[p.length()-1]=='-')
{
s=p.substr(0,p.length()-1);
i=reads();
p=s+p;
}
// printf("%s\n",p.c_str());
if (m.find(p)!=m.end()) n++;
}while(i!=2);
printf("%d",n);
return 0;
}
#include<stdio.h>
main()
{
int a[10]={0};
long n,b[20]={0},p,i;
scanf("%ld",&n);
a[1]=2; a[2]=3;
a[3]=5; a[4]=7;
a[5]=11; a[6]=13;
a[7]=17; a[8]=19;
a[9]=23;
p=1;
for(i=1; i<=19; i++)
{
p*=2;
b[i]=p-1;
}
i=1;
while((b[a[i]]<n)&&(i<=8))
{
if(b[a[i]]!=2047)printf("%ld\n",b[a[i]]);
i++;
}
if(i==1) printf("No solution\n");
}
#include "iostream.h"
#include "math.h"
int ax, ay, bx, by, cx, cy;
double ox, oy, r;
double upper, lower, right, left;
int iUpper, iLower, iRight, iLeft;
void circle(){
int a2=ax*ax+ay*ay, b2=bx*bx+by*by, c2=cx*cx+cy*cy;
int up=(a2-b2)*(bx-cx)-(b2-c2)*(ax-bx);
int down=(ay-by)*(bx-cx)+(ax-bx)*(cy-by);
oy=(1.0/2*up)/down;
up=(a2-c2)*(by-cy)-(b2-c2)*(ay-cy);
down=(ax-cx)*(by-cy)+(ay-cy)*(cx-bx);
ox=(1.0/2*up)/down;
r=sqrt((ax-ox)*(ax-ox)+(ay-oy)*(ay-oy));
}//finds values for r, ox, oy
void limits(){
upper=oy+r;
lower=oy-r;
right=ox+r;
left=ox-r;
}//sets values to variables upper, lower, right, left
double line(double x, double y){
return (x-ax)*(cy-ay)-(y-ay)*(cx-ax);
}
int on(double x, double y){
if(line(x, y)*line(bx, by)<0)
return 0;
else return 1;
}//returns 1 if point (x, y) on the arc, or 0
main(){
cin>>ax>>ay>>cx>>cy>>bx>>by;
circle();
limits();
if(on(ox, upper)!=1){
iUpper=ay;
if(iUpper iUpper=cy;
}
else{
iUpper=int(floor(upper));
if(upper-iUpper>0.0000001)
iUpper++;
}
if(on(ox, lower)!=1){
iLower=ay;
if(iLower>cy)
iLower=cy;
}
else{
iLower=int(floor(lower));
}
if(on(left, oy)!=1){
iLeft=ax;
if(iLeft>cx)
iLeft=cx;
}
else{
iLeft=int(floor(left));
}
if(on(right, oy)!=1){
iRight=ax;
if(iRight iRight=cx;
}
else{
iRight=int(floor(right));
if(right-iRight>0.0000001)
iRight++;
}
cout<<(iUpper-iLower)*(iRight-iLeft);
return 0;
}