Notice: Undefined index: name in /usr/www/lib/views/home/viewtitle.html on line 188
-阅读程序 第 16 题
给定长为n的序列a,$a_i$的元素均为$[0,10^9]$内的整数。计算 $\sum_{i=1}^n[i \equiv 1(mod2)] \sum _{1 \leq j\leq n}^{i|j} a_j$ 对$10^9+7$取模后的值。其中[P]当命题P为真时值为1,否则值为0。
#include<cstdio>
#include <vector>

const int mod=1e9+7;
std::vector <int>vec;

inline int inc(int x,int y)
{ x+=y-mod;return x+(x>>31 & mod);}
inline int mul(int x,int y) {return 1ll*x*y%mod;}

int main()
{
	int n;
	scanf ("%d",&n);
	vec.push_back(0);
	for (int i=1;i<=n;++i)
	{
		int x;
		scanf ("%d",&x) ;
		vec.push_back(x);
	}
	int ans=0;
	for (int i=1;i<=n;++i)
		if(i&1)
			for (int j=i;j<=n;j+=i)
				ans=inc(ans,mul(vec[i],vec[j]));
	printf ("%d\n",ans);
	return 0;
}
● 判断题
第 1 题 (1分) vec.push_back(x)的含义为向容器vec的尾部插入元素x。( )
第 2 题 (1分) 对于0≤i≤2^31-1,语句 i&1 的含义与i mod 2等价。( )
第 3 题 该程序需要注意运算时可能超出int类型所能容纳的最大数据的风险。( )
第 4 题 inc(x,y)的含义为返回(x+y) mod(10*+7)的值(0<=x,y<10^9+7)。( )
● 单选题
第 5 题 (3分)该算法的时间复杂度为( )
第 6 题 下列说法错误的是( )。

解答部分以后会开放。