有关大数的填空题
选Python比较简单
斐波那契gcd一个结论
gcd(f[n],f[m])=f[gcd(n,m)] :f表示斐波那契数列
跑步锻炼
题目描述
正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己,小蓝要跑 2 千米。如果同时是周一或月初,小蓝也是跑 2 千米。
小蓝跑步已经坚持了很长时间,从 2000 年 1 月 1 日周六(含)到 2020 年 10 月 1 日周四(含)。请问这段时间小蓝总共跑步多少千米? 8879
Excel方法:
新建Excel表:第一列日期2000/1/1开始(表格变窄后开始下拉(快))==》第二列星期数(函数中的其他函数中的时间和日期中WEEKDAY函数)==》第三列判断1号或周一(函数中的逻辑函数中的OR
)==》第四列公里数(
)==》选中后三列缩小后下拉==》最后全选最后一列(
)
代码方法:
#include <iostream>
using namespace std;
bool isLeap(int y){
return (y%4==0&&y%100!=0)||(y%400==0);
}
int main()
{
int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};//每个月天数
int ans=0,week=0;//1号(周6)开始计算星期几
for(int i=2000;i<=2020;i++){
if(isLeap(i)) month[2]=29;//闰年2月29天
else month[2]=28;//每循环一年都需要判断一次!!!
for(int m=1;m<=12;m++){
if(i==2020&&m==10) break;
for(int d=1;d<=month[m];d++){
int xq=(week+6)%7;//计算星期几
if(xq==1||d==1) ans+=2;//周一或月初
else ans++;
week++;
}
}
}
cout<<ans+2<<endl;//加上2020/10/1号
return 0;
}
关于日期问题
首先判断闰年:(y%4==0&&y%100!=0)||(y%400==0)
每个月的天数:1,3,5,7,8,10,12(腊)31天永不差,闰年2月29天,非润28天,其余每月30天
星期判断:从已知开始的周几开始基础上++后,%7判断
质数
题目描述
我们知道第一个质数是 2、第二个质数是 3、第三个质数是 5……
请你计算第 2019 个质数是多少?
代码:
注意:!!!while循环中i++如果在下面,最后答案应为i-1!!!
#include <iostream>
#include <cmath>
using namespace std;
bool isPrime(int n){
for(int i=2;i<=sqrt(n);i++){
if(n%i==0) return false;
}
return true;
}
int main()
{
int cnt=1,i=2;
while(cnt<2019){
i++;
if(isPrime(i)) cnt++;
}
cout<<i<<endl;
// int cnt=0,i=2;
// while(cnt<2019){
// if(isPrime(i)) cnt++;
// i++;
// }
// cout<<i-1<<endl;
return 0;
}