zoukankan      html  css  js  c++  java
  • 超氧化钾

    Description
    作为一个化学小考只有77分的同学,小W感觉很有压力,所以他决定搞化学。今天他开始研究超氧化钾,这是一种很神奇的离子化合物,在高温下空间结构是立方体,如下图所示。有一天教黄交给了小W一个任务:根据教黄多年淘金的经验,他发现超氧化钾有一个神奇的性质就是如果一组有序的整数(x,y,z)满足z=x mod 1+x mod 2+…+x mod y,那么对于超氧化钾来说这个位置上的离子就是一个关键离子。通过用回旋加速器得到高速粒子来攻击这个离子,他就可以获得铜铝制金法的催化剂。现在教黄想知道对于一个给定的x和y对应的z值是多少。
    在这里插入图片描述

    Input
    两个整数x,y。

    Output
    一个整数z。

    Sample Input
    1 1

    Sample Output
    0

    Data Constraint
    40%的数据,y<=10^5。
    100%的数据,1<=x,y<=10^9。

    .
    .
    .
    .
    .
    .
    分析
    对于一段连续的i…j,如果除k的商相同,那么除k的余数是一个等差数列。这样每一段都可以O(1)求出。
    这样问题就变成了对于k/i=p,找到最大的j,使n/j=p。不难发现,若p=0,则j=n。否则j=k/p。

    .
    .
    .
    .
    .

    程序:

    #include<iostream>
    #include<cstdio>
    using namespace std;
    
    int x,y,j,x1,y1;
    long long ans;
    
    int main()
    {
    	scanf("%d%d",&x,&y);
    	for (int i=1;i<=y;i=j+1)
    	{
    		int p=x/i;
    		if (p==0) j=y; else j=min(x/p,y);
    		x1=x%i;
    		y1=x%j;
    		ans+=(long long)(x1+y1)*(j-i+1)/2;
    	}
    	printf("%lld
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    背完这444句,你的口语绝对不成问题了
    过滤HTML
    Asp.net页面的生命周期
    查询分组中的前几条记录
    offsetLeft,Left,clientLeft的区别
    可以用javascript实现的10种图片特效
    了解黑客经常使用哪些工具
    js日历控件
    asp.net中的path备忘录
    ASP.NET MVC3 向View传递数据
  • 原文地址:https://www.cnblogs.com/YYC-0304/p/10458947.html
Copyright © 2011-2022 走看看