bzoj 1041: [HAOI2008]圆上的整点

本文介绍了一种用于解决特定数学问题的算法实现。通过C++编程语言,该算法能够计算给定范围内符合条件的整数对数量。利用了数学中的除法、平方根等概念,并通过布尔函数判断条件是否满足。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 using namespace std;
 5 int sum;
 6 long long R;
 7 bool pan(int a1,double a4)
 8 {
 9     int a2=floor(a4);
10     if(a2!=a4)
11       return 0;
12     int a3=a1%a2;
13     for(;a3;)
14       {
15         a1=a2;
16         a2=a3;
17         a3=a1%a2;
18       }
19     if(a2==1&&a1!=a2)
20       return 1;
21     return 0;
22 }
23 int main()
24 {
25     scanf("%lld",&R);
26     for(int i=1;i<=sqrt(2*R);i++)
27       if((2*R)%i==0)
28         {
29            for(int a=1;a<=sqrt((2*R)/(2*i));a++)
30              if(pan(a,sqrt(((2*R)/i)-a*a)))
31                sum++;
32            if((2*R)/i!=i)
33              for(int a=1;a<=sqrt(i/2);a++)
34                if(pan(a,sqrt(i-a*a)))
35                  sum++; 
36         }
37     printf("%d\n",4*sum+4);
38 }

这是个脑洞大开的数学题 http://blog.youkuaiyun.com/csyzcyj/article/details/10044629

转载于:https://www.cnblogs.com/xydddd/p/5232763.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值