UVa1363 Joseph's Problem

把整个序列进行拆分成[k,k/2),[k/2, k/3), [k/3,k/4)...k[k/a, k/b)的形式,对于k/i(整除)相同的项,k%i成等差数列。

 /*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
long long n,m,k;
int main(){
while(scanf("%lld%lld",&n,&k)!=EOF){
int i,j;
long long ans=;
for(i=;i<=n;i=m+){
m=k/i;
if(!m)m=n;
else m=min(k/m,n);
ans+=(k%i+k%m)*(m-i+)/;
}
printf("%lld\n",ans);
}
return ;
}
上一篇:教你如何在 Android 使用多线程下载文件


下一篇:java 网络编程基础 InetAddress类;URLDecoder和URLEncoder;URL和URLConnection;多线程下载文件示例