1 条题解
-
0
血与泪的教训
分三种情况,按列开始枚举,如果遇到格点就-1
一定要想好边界再开始写,只要可能枚举到只有一个点的列千万别取!!!
千万别取!!!
千万别取!!!(因为这时要-2,为了公式简便直接舍弃就行了)
再者,尽量别先算好斜率及截距再代入,精度可能出问题
我是数学不好只会模拟的蒟蒻吖~ 以下本蒟蒻枚举代码#include <bits/stdc++.h> using namespace std; int m,n,p; long ans=0; int main() { cin>>n>>m>>p; if (n<p){ for (int x=1;x<=n;x++){ ans+=int(double(m)*double(x)/double(n)); if ((m*x)%n==0){ ans--; } } for (int x=n+1;x<p;x++){ ans+=int(((double(p)-double(x))*double(m))/(double(p)-double(n))); if (((p-x)*m)%(p-n)==0){ ans--; } } } else if (n==p){ for (int x=1;x<n;x++){ ans+=int(double(m)*double(x)/double(n)); if ((m*x)%n==0){ ans--; } } } else { for (int x=1;x<n;x++){ ans+=int(double(m)*double(x)/double(n)); if ((m*x)%n==0){ ans--; } } for (int x=p;x<n;x++){ ans-=int(((double(p)-double(x))*double(m))/(double(p)-double(n))); } } cout<<ans; }
- 1
信息
- ID
- 62
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- 递交数
- 99
- 已通过
- 6
- 上传者