NOIP2011初赛 NOIP2011初赛 提高组 C++ 8 hugeint add(hugeint a,hugeint b) //计算大整数a和b 的和 { int i; hugeint ans; memset(ans.num,0,sizeof(ans.num)); if(a.len>b.len) ans.len=a.len; else ans.len=b.len; for(i=1;i0) ans.len++; ret...
NOIP2011初赛 提高组 C++ 8 hugeint add(hugeint a,hugeint b) //计算大整数a和b 的和 { int i; hugeint ans; memset(ans.num,0,sizeof(ans.num)); if(a.len>b.len) ans.len=a.len; else ans.len=b.len; for(i=1;i<=ans.len;i++){ ans.num[i]+= ③ ; ans.num[i+1]+= ans.num[i]/10; ans.num[i]%=10; } if(ans.num[ans.len+1]>0) ans.len++; return ans; } hugeint average(hugeint a,hugeint b) //计算大整数a和b的平均数的整数部分 { int i; hugeint ans; ans=add(a,b); for(i=ans.len;i>=2;i--){ ans.num[i-1]+=( ④ )*10; ans.num[i]/=2; } ans.num[1]/=2; if(ans.num[ans.len]==0) ans.len--; return ans; } hugeint plustwo(hugeint a) // 计算大整数a加2之后的结果 { int i; hugeint ans; ans=a; NOIP2011初赛 提高组 C++ 9 ans.num[1]+=2; i=1; while( (i<=ans.len)&&(ans.num[i]>=10) ){ ans.num[i+1]+=ans.num[i]/10; ans.num[i]%=10; i++; } if(ans.num[ans.len+1]>0) ⑤ ; return ans; } bool over(hugeint a,hugeint b) // 若大整数a>b则返回true,否则返回false { int i; if( ⑥ ) return false; if( a.len>b.len ) return true; for(i=a.len;i>=1;i--){ if(a.num[i]b.num[i]) return true; } return false; } int main() { string s; int i; hugeint target,left,middle,right; cin>>s; memset(target.num,0,sizeof(target.num)); target.len=s.length(); for(i=1;i<=target.len;i++) target.num[i]=s[target.len-i]- ⑦ ; memset(left.num,0,sizeof(left.num)); left.len=1; left.num[1]=1; right=target; do{ middle=average(left,right); NOIP2011初赛 提高组 C++ 10 if(over( ⑧ )) right=middle; else left=middle; }while(!over(plustwo(left),right) ); for(i=left.len;i>=1;i--) cout< using namespace std; const int SIZE=100+5; const int INFINITY=1000000; int n,a[SIZE],maxDeep,num; void solve(int left,int right,int deep) { int i,j,min; if(deep>maxDeep){ maxDeep=deep; num=1; } else if(deep==maxDeep) ① ; min= INFINITY; for(i=left;i<=right;i++) if(min>a[i]){ min=a[i]; ② ; } if(left>n; for(i=1;i<=n;i++) cin>>a[i]; maxDeep=0; solve(1,n,1); cout<
本文档为【NOIP2011初赛】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。