【网易】牛客网2019校招真题(编程题)
分类:
IT文章
•
2023-11-03 13:58:41
【网易】被3整除
【题解】打表找规律,n为3的倍数和3的倍数余2的都是可以的,3的倍数余1的数是不可以的。
1 #include<bits/stdc++.h>
2 using namespace std;
3 int main()
4 {
5 int l,r,sum1,sum2;
6 scanf("%d%d",&l,&r);
7 l--;
8 if(l%3==0)sum1=l/3*2;
9 else if(l%3==2)sum1=((l+1)/3*2)-1;
10 else sum1=(l-1)/3*2;
11 if(r%3==0)sum2=r/3*2;
12 else if(r%3==2)sum2=((r+1)/3*2)-1;
13 else sum2=(r-1)/3*2;
14 printf("%d
",sum2-sum1);
15 }
View Code
【网易】迷路的牛牛
【题解】简单模拟题。分类讨论即可。
【代码】
1 #include<bits/stdc++.h>
2 using namespace std;
3 int main()
4 {
5 int n;
6 char s[1005];
7 scanf("%d",&n);
8 scanf("%s",s);
9 char now='N';
10 for(int i=0;i<n;i++)
11 {
12 if(now=='N')
13 {
14 if(s[i]=='L')now='W';
15 else now='E';
16 }
17 else if(now=='W')
18 {
19 if(s[i]=='L')now='S';
20 else now='N';
21 }
22 else if(now=='S')
23 {
24 if(s[i]=='L')now='E';
25 else now='W';
26 }
27 else
28 {
29 if(s[i]=='L')now='N';
30 else now='S';
31 }
32 }
33 printf("%c
",now);
34 }
View Code
【网易】俄罗斯方块
【题解】记录一下每一列的方块的个数,最后取个最小值。
【代码】
1 #include<bits/stdc++.h>
2 using namespace std;
3 int main()
4 {
5 int n,m,a[1005];
6 scanf("%d%d",&n,&m);
7 int x;
8 memset(a,0,sizeof(a));
9 for(int i=1;i<=m;i++)
10 {
11 scanf("%d",&x);
12 a[x]++;
13 }
14 int ans=0x3f3f3f3f;
15 for(int i=1;i<=n;i++)
16 {
17 //printf("%d
",a[i]);
18 ans=min(ans,a[i]);
19 }
20 printf("%d
",ans);
21 }
View Code
【网易】安置路灯
【题解】贪心。每放置一个路灯,连续3个位置都能照亮,所以遇到一个“.”放一个路灯,后面两个位置即可跳过。
【代码】
1 #include<bits/stdc++.h>
2 using namespace std;
3 char s[1005];
4 int main()
5 {
6 int T;
7 scanf("%d",&T);
8 while(T--)
9 {
10 int n,i=0,ans=0;
11 scanf("%d",&n);
12 scanf("%s",s);
13 while(i<strlen(s))
14 {
15 if(s[i]=='.')
16 {
17 ans++;
18 i+=3;
19 }
20 else i++;
21 }
22 printf("%d
",ans);
23 }
24 }
View Code
【网易】丰收
【题解】将每一堆苹果做一个前缀和,可以得出从左往右数前i堆苹果的总数sum[i],对于每一次询问,只需查找第一个大于等于q的sum,考虑时间需要用二分查找(自己手写或者lower_bound都可)。
【代码】
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int maxn=1e5+5;
4 int a[maxn],sum[maxn];
5 int main()
6 {
7 int n;
8 scanf("%d",&n);
9 for(int i=1;i<=n;i++)
10 {
11 scanf("%d",&a[i]);
12 sum[i]=sum[i-1]+a[i];
13 }
14 int T;
15 scanf("%d",&T);
16 while(T--)
17 {
18 int q;
19 scanf("%d",&q);
20 int p=lower_bound(sum+1,sum+1+n,q)-sum;
21 printf("%d
",p);
22 }
23 }
View Code
1 #include<bits/stdc++.h>
2 using namespace std;
3 int main()
4 {
5 int a,b,c;
6 scanf("%d%d%d",&a,&b,&c);
7 int d=(a+b)*c;
8 int e=a+b*c;
9 int f=a*b+c;
10 int g=a*(b+c);
11 int h=a+b+c;
12 int j=a*b*c;
13 printf("%d
",max(h,max(j,max(d,max(e,max(f,g))))));
14 }
1 #include<bits/stdc++.h>
2 using namespace std;
3 int a[105];
4 bool cmp(int a,int b)
5 {
6 return a>b;
7 }
8 int main()
9 {
10 int n,h,m,x;
11 scanf("%d",&n);
12 for(int i=0;i<n;i++)
13 {
14 scanf("%d%d",&h,&m);
15 a[i]=h*60+m;
16 }
17 sort(a,a+n,cmp);
18 scanf("%d",&x);
19 scanf("%d%d",&h,&m);
20 int res=h*60+m-x;
21 for(int i=0;i<n;i++)
22 {
23 if(a[i]<=res)
24 {
25 printf("%d %d
",a[i]/60,a[i]%60);
26 return 0;
27 }
28 }
29 }