for(i=0;i<10;i++)
{
n[i]=1;
}
break;
}
}
}
}
}
1029 锁头转动度数的问题,规则如下:
turn the dial clockwise 2 full turns
stop at the first number of the combination
turn the dial counter-clockwise 1 full turn
continue turning counter-clockwise until the 2nd number is reached
turn the dial clockwise again until the 3rd number is reached
pull the shank and the lock will open.
Sample Input
0 30 0 30 5 35 5 35 0 20 0 20 7 27 7 27 0 10 0 10 9 19 9 19 0 0 0 0
Sample Output
1350
1350
1620
1620
1890
1890
#include
using namespace std;
int main()
{
int a,b,c,d;
int sum;
while(cin>>a>>b>>c>>d && (a || b || c || d))
{
sum=0;
sum=1080+(40+(a-b))%40*9+(40+(c-b))%40*9+(40+(c-d))%40*9;
cout<}
}
1029another idea
#include
using namespace std;
float lockemu(int s,int t,int d)
{
int m[40];
for(int i=0;i<=39;i++){m[i]=i;}
int cnt=0,i=s;
while(m[i]!=t)
{
cnt++;
i+=d;
if (i==-1) {i=39;}
if (i==40) {i=0;}
}
return (float)(cnt/40.0)*360;
}
int main()
{
int s1,s2,s3,s4;
int d=0;
while(cin>>s1>>s2>>s3>>s4 && s1+s2+s3+s4!=0)
{
cout<<720+lockemu(s1,s2,-1)+360+lockemu(s2,s3,1)+lockemu(s3,s4,-1)<}
return 0;
}
1029myself
#include
using namespace std;
int main()
{
int a,b,c,d;
int sum1,sum2,sum3;
int sum;
while(cin>>a>>b>>c>>d)
{
sum1=sum2=sum3=0;
sum=0;
if(a!=0 || b!=0 || c!=0 || d!=0)
{
if(a
sum1=(40-(b-a))*9;
else if(a>b)
sum1=(a-b)*9;
else
sum1=360;
if(b>c)
sum2=(40-(b-c))*9;
else if(bsum2=(c-b)*9;
else
sum2=360;
if(csum3=(40-(d-c))*9;
else if(c>d)
sum3=(c-d)*9;
else
sum3=360;
sum=1080+sum1+sum2+sum3;
cout<}
else
break;
}
return 0;
}
1039 求m
c的问题
n
#include
using namespace std;
int main()
{
long long x,y,sum;
while(cin>>x>>y)
{
if(x==0 && y==0)
break;
int i,j;
sum=1;
if(x>y*2)
{
for( i=(x-y+1),j=1;i<=x,j<=y;i++,j++)
{
sum=sum*i/j;
}
}
if(x<=y*2)
{
for(i=y+1,j=1;i<=x,j<=(x-y);i++,j++)
{
sum=sum*i/j;
}
}
cout<}
}
1159 递推问题,公式如下:F(0) = 7, F(1) = 11, F(n) = F(n-1) + F(n-2) (n>=2)得到的F(n)能被3整除,输出yes,反之输出no。
Sample Input
1
2
3
4
5
Sample Output
no
no
yes
no
no
no
#include
using namespace std;
int main()
{
int n;
while(cin>>n)
{
if(n<1000000 && n>=0)
{
int a[99999];
a[0]=7;
a[1]=11;
int i;
for(i=2;i<=n;i++)
{
a[i]=a[i-1]+a[i-2];
}
if(i<2)
cout<<"no"<if(a[i-1]%3==0)
cout<<"yes"<else
cout<<"no"<}
else
continue;
}
}
1060 正明任何一个大于4的整数都可以分解成两个素数相加的和
Sample Input
8
20
42
Sample Output
8 = 3 + 5
20 = 3 + 17
42 = 5 + 37
#include
#include
using namespace std;
int main()
{
int n,m,i,j,k,p;
while(scanf("%d",&n)!=EOF)
{
if(n%2!=0)
continue;
p=n/2;
for(i=2;i<=p;i++)
{
k=0;
for(j=2;j<=(int)sqrt(i);j++)
{
if(i%j==0)
break;
}
if(j==(int)sqrt(i)+1)
{
m=n-i;
for(k=2;k<=(int)sqrt(m);k++)
{
if(m%k==0)
break;
}
if(k==(int)sqrt(m)+1)
{
//cout<printf("%d = %d + %d\n",n,i,m);
break;
}
}
}
if(i==p+1)
printf("Goldbach's conjecture is wrong.");
}
}
1079 判断字符串包含问题
Sample Input
sequence subsequence
person compression
VERDI vivaVittorioEmanueleReDiItalia caseDoesMatter CaseDoesMatter Sample Output
Yes
No
Yes
No
#include
#include
#include
using namespace std;
int main()
{
string s,s1;
while(cin>>s1>>s)
{
int t=0,i=0,j=0;
int length=0,length1=0;
while(s[length])
{
length++;
}
while(s1[length1])
{
length1++;
}
while(s[i])
{
if(s1[j]==s[i])
{
j++;
}
i++;
if(j==length1)
{
t=1;
break;
}
}
if(t==1)
cout<<"Yes"<else
cout<<"No"<}
}
1082 求两个点(坐标形式)的终点问题
Sample Input
5 10 2 18 2 22
6 14 18 10 18
3 -
4 6 -2 4 -2 6
3 -8 12
4 8 6 12
Sample Output
5 14.000000 2.000000 20.000000 4.000000 18.000000 12.000000 12.000000 18.000000 10.000000 10.000000
3 -3.000000 5.000000 -2.000000 5.000000 -3.000000 6.000000
3 -2.000000 10.000000 5.000000 10.000000 -1.000000 12.000000
#include
#include
using namespace std;
int main()
{
int n;
while(cin>>n && n!=0)
{
int i=0,s;
double a[99999],b[99999];
double c[99999],d[99999];
s=n;
while(s)
{
cin>>a[i]>>b[i];
i++;
s--;
}
for(int j=0;j{
//cout<<"^^^^^^^^^^^";
if(j{
c[j]=(a[j]+a[j+1])/2.0;
d[j]=(b[j]+b[j+1])/2.0;
}
if(j==n-1)
{
c[j]=(a[j]+a[0])/2.0;
d[j]=(b[j]+b[0])/2.0;
}
}
cout<for(int j=0;j{
cout<cout<<" ";
cout<if(j!=n-1)
cout<<" ";
}
cout<}
}
1198 限定一个最小的矩形,把输入的所有的点包含进去
Sample Input
12 56
23 56
13 10
0 0
12 34
0 0
0 0
Sample Output
12 10 23 56
12 34 12 34
#include
#include
using namespace std;
int main()
{
int x,y;
int x1,y1,x2,y2;
int i=1,j;
while(i)
{
x1=99999;
y1=99999;
y2=0;
x2=0;
j=0;
while(cin>>x>>y && (x || y))
{
j++;
if(x1>x)
{x1=x;}
if(x2{x2=x;}
if(y1>y)
{y1=y;}
if(y2{y2=y;}
}
if(j==0)
break;
cout<}
}
1199 一个自定义的加法规则比如:24+1 -> 42+1 -> 43 -> 34
Sample Input
3
24 1
4358 754
305 794
Sample Output
34
1998
1
#include
#include
#include