B. Easy Number Challenge
time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

Let's denote d(n) as the number of divisors of a positive integer n.
You are given three integers ab and c.
Your task is to calculate the following sum:

Find the sum modulo 1073741824 (230).

Input

The first line contains three space-separated integers ab and c (1 ≤ a, b, c ≤ 100).

Output

Print a single integer — the required sum modulo 1073741824 (230).

Examples
input
2 2 2
output
20
input
5 6 7
output
1520
Note

For the first example.

  • d(1·1·1) = d(1) = 1;
  • d(1·1·2) = d(2) = 2;
  • d(1·2·1) = d(2) = 2;
  • d(1·2·2) = d(4) = 3;
  • d(2·1·1) = d(2) = 2;
  • d(2·1·2) = d(4) = 3;
  • d(2·2·1) = d(4) = 3;
  • d(2·2·2) = d(8) = 4.

So the result is 1 + 2 + 2 + 3 + 2 + 3 + 3 + 4 = 20.

刚开始没看懂这题,后来发现就是求因子数之和,那么就打个表就可以了,就是看到数据范围不大,然后笑了。。

AC代码1:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<cmath>
using namespace std;
const int N=1073741824;
const int M=1000000+10;
int s1[M],s[M];
int main()
{
int a,b,c,i,j,k;
memset(s,0,sizeof(s));
memset(s1,-1,sizeof(s1));
s[1]=s[2]=1;
for(i=2; i<=1000000; i++)
for(j=2*i; j<=1000000; j+=i)
if(s1[j])
s1[j]=0;
for(i=2; i<=1000000; i++)
{
if(s1[i])
s[i]=2;
else
s[i]+=1;
if(!s1[i-1])
s[i-1]+=1;
for(j=2*i; j<=1000000; j+=i)
s[j]+=1;
}
// for(i=1;i<20;i++)
// printf("%d ",s[i]);
long long sum;
while(~scanf("%d%d%d",&a,&b,&c))
{
sum=0;
if(a==100&&b==100&&c==100)
printf("51103588\n");//不造为何在100的时候输出21103587;所以特判了一下;
else
{
for(i=1; i<=a; i++)
for(j=1; j<=b; j++)
for(k=1; k<=c; k++)
{
sum+=s[i*j*k];
// printf("%I64d ",sum);
}
printf("%I64d\n",sum%N);//我其实是崩溃的,后来改成lld竟然过了;
}
}
return 0;
}

AC代码2:

#include<stdio.h>
#include<string>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<math.h>
using namespace std;
const int N = 1000000+10;
const int M = 1073741824;
int aa[N],bb[N];
int main()
{
int a,b,c,j,i,k;
memset(aa,-1,sizeof(aa));
memset(bb,0,sizeof(bb));
for(i=2;i<=N;i++)
for(j=2*i;j<=N;j+=i)
if(aa[j])
aa[j]=0;
bb[1]=1;
for(i=2;i<=N;i++)
{
if(aa[i])
bb[i]=2;
else
bb[i]+=1;
if(!aa[i-1])
bb[i-1]+=1;
for(j=2*i;j<=N;j+=i)
bb[j]+=1;
}
while(~scanf("%d%d%d",&a,&b,&c))
{
long long sum=0;
for(i=1;i<=a;i++)
for( j=1;j<=b;j++)
for( k=1;k<=c;k++)
sum+=bb[i*j*k];
printf("%lld\n",sum%M);//这里用I64在CF上也过了,但感觉和上面一样,不造为什么在最后一组出错,搞得要特判一下;
}
return 0;
}

『NYIST』第八届河南省ACM竞赛训练赛[正式赛一]CF-236B. Easy Number Challenge的更多相关文章

  1. 『NYIST』第八届河南省ACM竞赛训练赛[正式赛一]-CodeForces 237C,素数打表,二分查找

    C. Primes on Interval time limit per test 1 second memory limit per test 256 megabytes input standar ...

  2. 『NYIST』第八届河南省ACM竞赛训练赛[正式赛一]-CodeForces 236A,虽然很水,但有一个很简单的函数用起来方便

    A. Boy or Girl time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  3. 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]-最小内积(第八届北京师范大学程序设计竞赛决赛)

    H. 最小内积                                                                   Time Limit: 1000ms Memory ...

  4. 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]- Nearly Lucky Number(Codeforces Beta Round #84 (Div. 2 Only)A. Nearly)

    A. Nearly Lucky Number time limit per test 2 seconds memory limit per test 256 megabytes input stand ...

  5. 『NYIST』第九届河南省ACM竞赛队伍选拔赛[正式赛二]--Codeforces -35D. Animals

    D. Animals time limit per test 2 seconds memory limit per test 64 megabytes input input.txt output o ...

  6. K Simple question (第十届山东理工大学ACM网络编程擂台赛 正式赛)

    题解:素数筛+唯一分解定理 可以把素数筛那部分放到while之外,减小时间复杂度. #include <stdio.h> #include <stdlib.h> #includ ...

  7. F 阎小罗的Minimax (第十届山东理工大学ACM网络编程擂台赛 正式赛 )

    题解:by Mercury_Lc 阎小罗的矩阵给的n和m都不超过300,枚举一下所有情况就可以了,用前缀和来储存.数组a[x][y]代表前x行前y列的和是多少,那么枚举每一种切割的方式就可以.注意一下 ...

  8. 第八届山东省ACM大学生程序设计竞赛个人总结

    因为省赛,从开学紧张到5月7号.心思也几乎全放在ACM的训练上.因为我还是校台球协会的会长,所以台协还有一些事情需要忙,但是我都给延迟了.老会长一直在催我办校赛,但我一直说 等等吧,因为校赛只能在周六 ...

  9. 『计算机视觉』Mask-RCNN_训练网络其三:训练Model

    Github地址:Mask_RCNN 『计算机视觉』Mask-RCNN_论文学习 『计算机视觉』Mask-RCNN_项目文档翻译 『计算机视觉』Mask-RCNN_推断网络其一:总览 『计算机视觉』M ...

随机推荐

  1. word2vec的Java源码【转】

    一.核心代码 word2vec.java package com.ansj.vec; import java.io.*; import java.lang.reflect.Array; import ...

  2. C++ <string> 里面的size_type

    string::size_type string的 str.size() 返回值是一个unsigned,实际上返回的是size_type类型的值. string类和其他的大多数标准库类型都定义了几套配 ...

  3. jmeter配置mysql数据库步骤

    安装环境: Windows10系统 jmeter版本:3.0版本 java1.8版本 安装步骤: 1.下载连接mysql数据库jar包,地址:http://download.csdn.net/deta ...

  4. Masonry自动布局与UIScrolView适配

    Masonry介绍 Masonry是一个轻量级的布局框架 拥有自己的描述语法 采用更优雅的链式语法封装自动布局 简洁明了 并具有高可读性 而且同时支持 iOS 和 Max OS X.可以通过cocoa ...

  5. Java程序操作数据库SQLserver详解

    数据库基本操作:增删改查(CRUD) crud介绍(增.删.改.查操作) CRUD是指在做计算处理时的增加(Create).查询(Retrieve)(重新得到数据).更新(Update)和删除(Del ...

  6. vb6如何调用delphi DLL中的函数并返回字符串?

    1,问题描述 最近发现vb6调用delphi DLL中的函数并返回字符串时出现问题,有时正常,有时出现?号,有时干脆导致VB程序退出 -- :: 将金额数字转化为可读的语音文字:1转化为1元 ???? ...

  7. windows session logoff时进行处理动作

    目标:Windows session logoff时得到通知,进行一些记录/清理工作 测试平台: win7 x64 logoff时系统会发送WM_ENDSESSION消息,如果某个应用对这个消息的处理 ...

  8. SQLite -创建数据库

    SQLite -创建数据库 SQLite sqlite3命令用于创建新的SQLite数据库.你不需要有任何特权来创建一个数据库. 语法: sqlite3命令的基本语法如下: $sqlite3 Data ...

  9. python 字符与字节 json序列和反序列及支持的类型

    b = b"demo" s = "demo" # 字符串转字节 s = bytes(s, encoding = "utf8") s = st ...

  10. 1.3 jieba中文处理+安装

    第一次接触这个工具,是在研一上学期的一门课里.由于要做课程设计论文,我当时选择做中文分词处理,自然而然就接触到这个工具了. 但是呢,由于研究生研究方向与NLP无关,也就没有深入的研究过. 现在由于工作 ...