UPC——问题 E: 回忆与困惑

Posted iamcookieandyou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UPC——问题 E: 回忆与困惑相关的知识,希望对你有一定的参考价值。

问题 E: 回忆与困惑
小学校里的欢声和校园里的花都溶解在静沉沉地夜气里。那种声音实在可见可触,可以供诸瓶儿,一簇又一簇。我听见钟声,像一个比喻,我没有数,但我知道他的急徐、轻重,我听出今天是西南风。
西南风?这个仿佛有点陌生又总是在那边的词语使我沉寂了下来。它使我想到了一个困惑,一个以前的已经解决,却还是有点淡淡的神秘的困惑。
我记得,当时是在西南方行进的远离故乡的火车上,遇到了这个兔子一般神秘的问题
这是一个跳跃的数列。经过长时间的观察,我发现这个数列的前面几项是这样的:1,1,2,3,5,8,13....
我发现,无论何时这个数列出现,他的前两项都是1,后面的数字都会看一眼前面的数字,把他前面的两项的值的和作为自己的值。
我记得,当时我想知道这个数列的第n项是什么。但是我不喜欢太大的数字,所以我困惑的n一定是一个小于等于64的正整数。也就是说,如果n不是正整数,或者n严格大于了64,那么它就不符合我的要求。现在,我仿佛回忆起了自己当时的询问,并希望请你一一回答。因为时间长了,记忆有点模糊,可能会有询问不符合我的要求,这时候你应该告诉我"pcftxdy"。(具体输出方式请按照输出格式中的描述来)
输入
第一行,一个正整数num表示子任务编号(Num=0表示这是样例数据)
第一行,一个整数T。
接下来T行,每行一个数ni表示第i组询问的n。
输出
由于输出可能太多,你只要输出不合法的询问的个数cnt和其他询问的异或和ans即可。
如果询问全都不合法,令ans=0
两个数中间用一个空格分隔。
样例输入 Copy
0
5
0
1
2
3
123456
样例输出 Copy
2 2
提示
对于第一组询问,n不在czyarl关心的范围内,不合法謻
对于第二组询问,n在czyarl关心的范围内,答案为1;
对于第三组询问,n在czyarl关心的范围内,答案为1;
对于第四组询问,n在czyarl关心的范围内,答案为2;
对于第五组询问,n大于了64,不合法;
最后不合法的询问有2个,cnt=2
ans=1 异或 1 异或 2 = 2

对于所有数据,n在int范围内,T≤106

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
//I want to be a big shot.
using namespace std;

typedef long long ll;
const ll N=1e6+10;

ll n,t;
ll a[N];
ll f[100];

int main(){
	cin>>t;
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>a[i];
	
	f[1]=1;f[2]=1;
	for(int i=3;i<=100;i++){
		f[i]=f[i-1]+f[i-2];
	}
	
	ll cnt=0,ans=0;
	
	for(int i=1;i<=n;i++){
		if(a[i]<=0||a[i]>64)
		cnt++;
		else{
			ans=ans^f[a[i]];
		}
	}
	if(cnt==n)ans=0;
	cout<<cnt<<" "<<ans<<endl;
}

  

以上是关于UPC——问题 E: 回忆与困惑的主要内容,如果未能解决你的问题,请参考以下文章

哈斯克尔。我很困惑这个代码片段是如何工作的

upc 3025 Fleecing the Raf?e

基于时间复杂度的这些片段真的很困惑

UPC5112/NEERC2017 E Equal Numbers(思维)

UPC9655 Plug It In!

错误记录Flutter 混合开发获取 BinaryMessenger 报错 ( FlutterActivityAndFragmentDelegate.getFlutterEngine() )(代码片段