前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布

圆点

作者头像
glm233
发布2020-09-28 10:08:07
4420
发布2020-09-28 10:08:07
举报

题目背景 中考了,Pg看着数学卷子的压轴题,陷入了沉思…… 题目描述 众所周知,平面中的每一个整点都有且仅有一个圆心在原点的圆穿过,我们定义这个整点的权值为穿过它的圆的半径的平方。 现在有一个圆心在原点的圆,半径为sqrt{R} 你要求出这个圆所包含的所有整点的权值和。 由于答案可能过大,对 109+7取模。 输入输出格式 输入格式: 一个数字 输出格式: 一行,仅有一个数字。 输入输出样例 输入样例#1: 3 输出样例#1: 12 输入样例#2: 100 输出样例#2: 16012 输入样例#3: 1234567 输出样例#3: 205275050

n年前用C语言打的60分蒟蒻代码

相信是个人都看得懂....

#include <stdio.h>
#include <stdlib.h>
#include<math.h>
int index(int x,int y)
{
    return x*x+y*y;
}
int main()
{
    int n;
    long long int sum=0;
    scanf("%d",&n);
    int x,y;
    int a=sqrt(n);
     for(x=1;x<=a;x++)
    {
        for(y=0;y<=a;y++)
        {
            if(x*x+y*y<=n)
            {
                sum+=index(x,y);
                //printf("%d %d\n",x,y);
                    sum%=(10*10*10*10*10*10*10*10*10+7);
            }
        }
    }

    printf("%lld", (sum*4)%(10*10*10*10*10*10*10*10*10+7));

    return 0;
}

看到数据范围就知道会超时,1e14,o(sqrt(n))可过..

圆是一个完美的轴对称图形只算第一象限,然后结果乘4即可

枚举每一对应给定横坐标的且在第一象限内的点个数,统计横坐标权值

横坐标和纵坐标情况一样挑x正半轴或y轴正半轴(二者取其一计算即可),因为要乘4,..

100婚代码

#include <bits/stdc++.h>
using namespace std;
#define ll long long
 ll ans,n,k, MOD=1e9+7;
int main()
{
cin>>n;
k=sqrt(n);
for(ll i=1;i<=k;i++)
{
    ll temp=(ll)sqrt(n-i*i)%MOD;
    ans+=((temp*2+1)%MOD*i%MOD*i%MOD)%MOD;
    ans%=MOD;
}
cout<<(ans*4)%MOD;
    return 0;
}

不要忘记随乘随%哦,%%%%%,%就完事了....勉勉强强卡过

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档