2022-09-04-之江实验室笔试

// // 入度之和
// // 时间限制: 1000MS
// // 内存限制: 65536KB
// // 题目描述:
// // 在包含N个节点的有向图上,节点从1到N编号。初始时图中没有连边,现在对于所有整数对 i 和 j ,如果满足1≤i<j≤N且 i 能整除 j ,则从 i 号节点向 j 号节点连一条边。那么图上所有节点的入度(某个节点的入度即连向该节点的边数)之和是多少?
// // 输入描述
// // 输入一个整数N,1≤N≤10e9。
// // 6
// // 样例输出
// // 8

// // for里是n,可以过82%
// // for里n改成n/2,91%
// // for里n改成n/3,91%
// // for里n改成n/4,100%
// #include<iostream>
// using namespace std;
// int main(){
//   int n;cin>>n;
//   long a=n-1;
//   for(int i=2;i<=n/4;i++){
//     a+=n/i-1;
//   }
//   a+=(n/3-n/4)*2;
//   a+=n/2-n/3;
//   cout<<a;
//   return 0;
// }



// 若若的难题
// 时间限制: 3000MS
// 内存限制: 589824KB
// 题目描述:
// 若若今天碰到了一道难题,难题是这样的,对于所有的小于等于n的a,b,且a和b不能相等,求出所有这些a和b的最大公约数,我们记g(n)为这些最大公约数的最大值,现在需要你求出g(2)*g(2)+ g(3)*g(3) + g(4)*g(4) + ... + g(2*n+1)*g(2*n+1)
// 输入描述
// 一个正整数n(2≤n≤1e9)
// 输出描述
// 输出答案对10007取模的结果
// 样例输入
// 3
// 样例输出
// 28
// 提示
// 样例解释
// 如n=3,需求出g(2)*g(2)+ g(3)*g(3) + g(4)*g(4) + ... + g(7)*g(7)
// g(2) = 1,    g(3) = 1,    g(4) = 2,    g(5) = 2,    g(6) = 3,    g(7) = 3
// 1*1+1*1+2*2+2*2+3*3+3*3=28

#include<iostream>
using namespace std;
int main(){
  long n;cin>>n;
  const long e = 10007;
  // cout<< (2*n%e*(n+1)%e*(2*n%e+1)%e/6%e)%e; //45%

  // long a = n%e, b=(n+1)%e, c=(2*n+1)%e;
  // cout<<((((a*b)%e)*c)%e/3)%e; // 55%

  // long long a = n%e, b=(n+1)%e, c=(2LL*n+1)%e;
  // cout<<((((a*b)%e)*c)%e/3)%e; // 90.91%

  // long long nn=n;
  // long long a = nn%e, b=(nn+1)%e, c=(2*nn+1)%e;
  // cout<<((((a*b)%e)*c)%e/3)%e; // 55%

  // long nn=n%e;
  // long long a = nn%e, b=(nn+1)%e, c=(2LL*nn+1)%e;
  // cout<<((((a*b)%e)*c)%e/3)%e; // 55%

  // long nn=n%e;
  // long long a = nn%e, b=(nn+1)%e, c=(2LL*nn+1)%e;
  // cout<<(((a*b)%e)*c)/3%e; // 82%

  long long nn=n%e;
  long long a = nn%e, b=(nn+1)%e, c=(2*nn+1)%e;
  cout<<((a*b*c)/3%e)%e; // 100%

  return 0;
}

// final cpp
#include<iostream>
using namespace std;
int main(){
  long long n;cin>>n;
  const long long e = 10007;
  long long nn=n%e;
  cout<<nn*(nn+1)*(2*nn+1)/3%e; 
  return 0;
}

# 之前cpp放弃了,测了很多次python先达到了100%
n = input('')
n = int(n)
e = 10007

# 之前py怎么写都只有 36%、45%
# n = int(2*n%e*(n+1)%e*(2*n%e+1)%e/6)%e
# n = int(n%e*(n+1)%e*(2*n%e+1)%e/3)%e # 55%
# print(n)

# 100%
a = n % e 
b = (n+1) % e
c = (2*n+1) % e
n = int(int(a*b*c)/3)
print(int(n % e))

# 64%
# print(int(2 * n % e *(n+1) % e * (2*n+1) / 6) % e)
#之江实验室##笔试##23秋招##23届秋招##23届秋招笔面经#
全部评论
hi~同学,秋招遇“寒气”,牛客送温暖啦!23届秋招笔面经有奖征集中,参与就得牛客会员7天免费体验,最高赢300元京东卡!戳我去看>>>https://www.nowcoder.com/link/zhengjipinglun
点赞
送花
回复
分享
发布于 2022-09-04 21:03 北京
同学你好,笔试是通过多少算过啊。。我没有通过100%用例
点赞
送花
回复
分享
发布于 2022-10-15 00:52 山东
秋招专场
校招火热招聘中
官网直投
第一题最优解法 n = 8 cnt = 0 j = 1 i = 1 while i < n + 1: j = n // (n // i) cnt += n // i * (j - i + 1) i += j + 1 print (cnt)
点赞
送花
回复
分享
发布于 2022-11-19 16:25 浙江
第二题我怎么题目都没读懂
点赞
送花
回复
分享
发布于 2022-11-19 16:51 浙江

相关推荐

8 25 评论
分享
牛客网
牛客企业服务