ZOJ 1095 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=95
原来微软好些题都来自OJ啊~
只是这些面试题都被 OJer 归类为水题不知让我们这些搓人如何着想啊。。。仰慕ZOJ 上的各种大牛神牛
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[5850];
int min4(int a,int b,int c,int d)
{
return min(a,min(b,min(c,d)));
}
int main()
{
int n=1;
int p2,p3,p5,p7;
p2=p3=p5=p7=1;
a[1]=1;
while(a[n]<2000000000)
{
a[++n]=min4(2*a[p2],3*a[p3],5*a[p5],7*a[p7]);
if(a[n]==2*a[p2]) p2++;
if(a[n]==3*a[p3]) p3++;
if(a[n]==5*a[p5]) p5++;
if(a[n]==7*a[p7]) p7++;
}
while(scanf("%d",&n),n)
{
if(n % 10 == 1 &&n %100!=11)
printf("The %dst humble number is %d.\n",n,a[n]);
else if(n % 10 == 2 && n %100 != 12 )
printf("The %dnd humble number is %d.\n",n,a[n]);
else if(n%10 == 3 && n %100!= 13)
printf("The %drd humble number is %d.\n",n,a[n ]);
else printf("The %dth humble number is %d.\n",n,a[n ]);
}
}
ZOJ 1151
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=151
又一个面试题,一个字符串中每个单词反转一下。不做OJ不知道,好多面试题来自于OJ上,但是都是ACMer眼中的水题啊!!!水题啊!!!我哭了去。。。。。
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
char s[1000];
void solve()
{
int sz=strlen(s);
int i=0,j=0;
while(s[j]!='\0')
{
if(s[j]==' ')
{
reverse(s+i,s+j);
i=j;
j++;
}
else
{
if (s[i]==' ')
i=j;
j++;
}
}
if (i<=j)
reverse(s+i,s+j);
}
int main()
{
int n,m,nCase=0;
scanf("%d",&n);
while(nCase<n)
{
scanf("%d\n",&m);
while(m--)
{
gets(s);
solve();
printf("%s\n",s);
}
if ( nCase++!=n-1)
printf("\n");
}
}
ZOJ 1088
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1088
其实就是约瑟夫环问题,问应该每隔几个报数能够使得2号曹楼是最后一个胜利者。
#include<iostream>
using namespace std;
int n;
int check(int m)
{
int s=0;
for(int i=2; i<n; ++i)
s=(s+m)%i;
return s;
}
int main()
{
cin>>n;
while(n>0)
{
int m=1;
while(check(m)) ++m;
cout<<m<<endl;
cin>>n;
}
return 0;
}