蓝桥杯----2022国C
《斐波那契与 7》
写的时候第一次尝试了暴力,跑了一个小时多都没有跑完
查了一下,大概1s可以跑1e8条指令
如果真要跑的话 202202011200 ,应该跑到比赛结束应该内跑完(希望电脑不会炸)
暴力还是不合理的,遇到这种情况试一下循环节
对于斐波那契数列Fn=Fn-1+Fn-2
所以只要出现了 (a,b)在前面出现过,那么就有循环了
其中我在使用map的时候有几个注意点:
1.count()的使用方法
count()是用来查看key出现在map中的次数
如果map<int,int>mp
则mp.count(key)
2.一般不管map定义为全局还是局部,对于未初始化的,其自动都为0(在value的类型为ll,int时)
《小蓝做实验》
这道题没啥,就是给个文件,我直接灵魂发问:c++咋读写文件来着?
c++读写文件的方式<------
string filename="tar.txt";
ifstream infile;
infile.open(filename);
if (!infile){
cout<<"error"<<endl;
return 1;
}
string line;
while (getline(infile,line))
{
}
《取模》
我是真没想到这道题完全写暴力就能满分,我还各种操作然后啥也没有

正如完全暴力的方法来思考:
我们从1~m一个一个枚举数num
当存在x,y时,说明 n mod num 的结果在之前存在过了
我们知道n mod 1=0
n mod 2=0 或 1 ,但是如果n mod 2= 0 那么我们就可以不用继续下去了
因为0已经在n mod 1 的结果出现过了
同理,如果要继续下去 那么必须 n mod num =num-1
代码暴力就行
#include<iostream> #include<cstring> #include<algorithm> #include<map> using namespace std; int main() { int t; cin>>t; while (t--) { map<int,bool>mp; int n,m; cin>>n>>m; bool flag=false; for (int i=1;i<=m;i++) { if (mp[n%i]) { flag=true; break; } else mp[n%i]=true; } if (flag) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }