目录
A:明天星期几呢?
今天星期一,明天必然星期二。这是肯定不变的规律。如果我告诉大家,今天礼拜几,你能帮我推算出明天星期几吗? 已知,我们对于星期几的日期(周一到周日)简写如下: 1,2,3,4,5,6,7
输入:
1
输出:
2
代码展示:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
if(n==7)cout<<1<<endl;//特判星期天的情况
else cout<<n+1<<endl;
}
B:神奇的数字变换
有一个数字魔法,给你一个正整数n,如果n为偶数,就将他变为n/2, 如果n为奇数,就将他变为乘3加1,不断重复这样的运算,经过有限步之后,一定可以得到1,牛牛为了验证这个魔法,决定用一个整数来计算几步能变成1
输入:
3
输出:
7
代码展示:
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int cnt=0;//cnt记录循环次数
while(n-1)//当n-1不为0,也就是当n不等于1的时候。进行下面的循环
{
if(n%2==0)n/=2;
else n=n*3+1;
cnt++;//每次循环结束cnt加1.
}
cout<<cnt<<endl;
}
C:简单的素数判断
给你一个整数n, 判断它是否是素数。注意1不是素数。
输入:
2
1
2
输出:
No
Yes
代码展示:
#include<bits/stdc++.h>
using namespace std;
int t;
int main()
{
cin>>t;
while(t--)//代表有t组输入样例
{
int a;
cin>>a;
int flag=0;
if(a==1)flag=1;//如果a的值为1,flag标记为1.
for(int i=2;i<=a-1;i++)
{
if(a%i==0)
{
flag=1;//如果a存在非1或者非本身的因数,那么flag标记为1.
break;
}
}
if(flag==0)cout<<"Yes"<<endl;//如果flag为0,说明a为素数。否则a为非素数。
else cout<<"No"<<endl;
}
}
D:简单的数列和
这次牛牛又换了个数列,他想计算:1+1/2+1/3+…+1/N的值。(保留6位小数)
输入:
2
输出:
1.500000
代码展示:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
double sum=0;
for(int i=1;i<=n;i++)//将i从1到n遍历一遍。
{
sum+=1.0/i;//将所遍历到的i用sum加上。
}
printf("%.6lf",sum);//小数输出用printf,这里保留6位输出
}
E:神奇的数列(easy)
求fib数列的第n项,前几项是1,1,2,3,5,每一项都等于前面两项的和
输入:
2
输出:
1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a=1,b=1;
int ans;
if(n==1)cout<<1<<endl;
else if(n==2)cout<<1<<endl;//斐波那契数列第一和第二项为1.
else
{
for(int i=3;i<=n;i++)
{
ans=a+b;//ans赋值为a和b的和
a=b;//a赋值为b
b=ans;//b赋值为ans
}
cout<<ans<<endl;
}
}
F:神奇的数列(hard)
题目链接:登录—专业IT笔试面试备考平台_牛客网
输入:
4
输出:
3
代码展示:
//这题和上一题相似,请自行理解。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a=0;
int b=1;
int c=1;
int n;
cin>>n;
if(n==1)cout<<a<<endl;
else if(n==2)cout<<b<<endl;
else if(n==3)cout<<c<<endl;
else
{
int ans;
for(int i=4;i<=n;i++)
{
ans=a+2*b+c;
a=b;
b=c;
c=ans;
}
cout<<ans<<endl;
}
}