摘要: 刚开始做这题时,用的是0.75[8]=(7/8+5/64)[10]这个,但是总是WA…………无语了……后来看别人的解题报告,知道了另外一个就是0.75[8]=((5/8+7)/8)[10],从低位向高位计算#include#include#include#include#include#includeusing namespace std;char a[101],b[101],c[101];int main(){ long i,j,len,lenb,lenc,k,l,add,temp; while(cin>>a) { len=strlen(a); lenc=0; for(i=len 阅读全文
posted @ 2013-07-17 16:59 _随心所欲_ 阅读(138) 评论(0) 推荐(0)
摘要: 找规律的题目an=an-1+(i+i%2)/2*2;#include#include#include#include#include#includeusing namespace std;int main(){ int i,j,ans[51]; ans[1]=1; for(i=2;i>t; while(t--) { cin>>n; cout<<ans[n]<<endl; } return 0;} 阅读全文
posted @ 2013-07-17 12:12 _随心所欲_ 阅读(230) 评论(0) 推荐(0)
摘要: 纯粹的阅读理解题…………#include#include#include#include#include#includeusing namespace std;int main(){ int n,i,j,t,k,m[101],l; double cost,sum,car,p[101],s; while(cin>>t>>cost>>sum>>k) { if(t>l>>s; if(i==0) p[j++]=s; else { while(j=sum) { cout=sum) break; } if(i==1) cout<< 阅读全文
posted @ 2013-07-17 11:01 _随心所欲_ 阅读(201) 评论(0) 推荐(0)
摘要: 刚开始没看清题意,要找的数一定要是素数#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 _随心所欲_ 阅读(194) 评论(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 _随心所欲_ 阅读(178) 评论(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 _随心所欲_ 阅读(256) 评论(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 _随心所欲_ 阅读(672) 评论(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 _随心所欲_ 阅读(169) 评论(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 _随心所欲_ 阅读(188) 评论(0) 推荐(0)