摘要:
刚开始没看清题意,要找的数一定要是素数#include#include#include#include#include#includeusing namespace std;int fun(int n){ int ans=0; while(n) { ans+=n%10; n/=10; } return ans;}int main(){ int n,i,j,k,sum,m; while(scanf("%d",&n)&&n) { for(k=n+1;;k++) { n=k;sum=0;m=0; for(i=2;i1) sum+=fun(n); if(su 阅读全文
posted @ 2013-07-16 23:01
_随心所欲_
阅读(197)
评论(0)
推荐(1)
摘要:
这个要慢慢理解……#include#include#include#include#include#includeusing namespace std;int main(){ int n,i,j,k,a1,a5,a10; bool flag; while(cin>>n>>a1>>a5>>a10&&(n+a1+a5+a10)) { i=j=k=0; if(n%5>a1) { cout0) j--; else { if(i>=5) i-=5; else { cout<<"Hat cannot buy 阅读全文
posted @ 2013-07-16 21:56
_随心所欲_
阅读(180)
评论(0)
推荐(0)
摘要:
简单水题……#include#include#include#include#include#includeusing namespace std;int main(){ int n,i,j; while(cin>>n) { j=0; for(i=0;i<=n/3;i++) { j+=(n-3*i)/2+1; } cout<<j<<endl; } return 0;} 阅读全文
posted @ 2013-07-16 20:32
_随心所欲_
阅读(125)
评论(0)
推荐(0)
摘要:
思路:这里有2种情况:一种是相遇:满足关系是 (va+vb)*t=L*(2*n-1)一种是追及: 满足关系是 |va-vb|*t=L*(2*n-1)这样求出2种情况的时间,在排序就可以了……链接:http://acm.hdu.edu.cn/showproblem.php?pid=1275#include#include#include#include#include#includeusing namespace std;double ans[2001];int main(){ int n,num,m,ia,ib,i,j; double len,va,vb,dis; cin>>m; 阅读全文
posted @ 2013-07-16 19:51
_随心所欲_
阅读(258)
评论(0)
推荐(0)
摘要:
思路:一定有sum[1]=num[1]+num[2],sum[2]=num[1]+num[3];但是sum[3]不知道是由num[1]+num[4]还是num[2]+num[3],这就需要枚举一下了。然后算出num[1],num[2],num[3]的值。并从sum中剔除他们,这是最小的一个一定是num[1]+num[4],再把num[4]+num[2-(4-1)]的和剔除,这时最小的一定是num[1]+num[5]……以此类推就可以了……链接:http://acm.hdu.edu.cn/showproblem.php?pid=1270#include#include#include#inclu 阅读全文
posted @ 2013-07-16 18:56
_随心所欲_
阅读(678)
评论(0)
推荐(1)
摘要:
看了别人的解题报告a了,大致思路就是A=a+b*10^k+c*10^(k+1) B=a+c*10^k (在A中取出一位数后)N=A+B=2*a+b*10^k+11*c*10^k这样就好做了,再就是注意进位可能影响b的值……链接http://acm.hdu.edu.cn/showproblem.php?pid=1271#include#include#include#include#include#includeusing namespace std;int main(){ int n,i,j,a,b,ans[1000],m,c; while(cin>>n&&n) { 阅读全文
posted @ 2013-07-16 16:05
_随心所欲_
阅读(171)
评论(0)
推荐(0)
摘要:
由乘2取整得到分数的小数位,可以找到规律!!!例如:1/10,2/10,4/10,8/10,16/10,32/10,64/10……取整后:1/10,2/10,4/10,8/10,6/10,2/10,4/10……这样我们就发现规律了!!!也就是对于p/q而言,要满足2^x=2^y mod q (gcd(p,q)==1);化简:2^x*(2^(x-y)-1) = 0 mod q;q里面2的倍数有多少个,就是最小的循环起始位置。继而化简:2^(x-y) = 1 mod q' (q'除以2的倍数之后的值)也就是求2^t = 1 mod q'由欧拉定理知道:t=phi(q' 阅读全文
posted @ 2013-07-16 10:53
_随心所欲_
阅读(191)
评论(0)
推荐(0)

浙公网安备 33010602011771号