现在的位置: 首页 > 综合 > 正文

zoj 1095 丑数、1151反转单词、1088 约瑟夫环

2017年12月23日 ⁄ 综合 ⁄ 共 1616字 ⁄ 字号 评论关闭

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;
}

【上篇】
【下篇】

抱歉!评论已关闭.