| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么用了memset就wa???代码如下,为什么用memset来给ans 和 a 来赋值就错了,
改成for(int i = 0; i < 350; i++){a[i] = 0;}
就ac了?
高手解答一下,谢谢!!
#include <iostream>
#include <cstring>
using namespace std;
bool chain[1010];
int size;
int ans[350];
int a[350];
int powerSize = 0;
int ansSize = 0;
void pow(int n)
{
int carry = 0;
for (int i = 0; i < n; i++){
carry = 0;
for( int j = 0; j <= powerSize; j++){
int tmp = a[j] * 2 + carry;
a[j] = tmp % 10;
carry = tmp / 10;
}
if (carry){
a[++powerSize] = carry;
}
}
}
void add()
{
int carray = 0;
int i;
for (i = 0; i <= powerSize || i <= ansSize; i++){
int tmp = ans[i] + a[i] + carray;
ans[i] = tmp % 10;
carray = tmp / 10;
}
if (carray){
ans[i] = carray;
if (i > ansSize){
ansSize = i;
}
}
else{
if (i - 1 > ansSize){
ansSize = i - 1;
}
}
}
int main()
{
for (int i = 0; i < 350; i++){
ans[i] = 0;
}
cin >> size;
bool status = 0;
for (int i = 0; i < size; i++){
cin >> chain[i];
}
for (int i = size - 1; i >= 0; i--){
for (int j = 0; j < 350; j++){
a[j] = 0;
}
a[0] = 1;
powerSize = 0;
if (status == 0){
if (chain[i] == 0){
continue;
}
else{
pow(i);
add();
status = 1;
}
}
else{
if (chain[i] == 1){
status = 0;
continue;
}
else{
pow(i);
add();
}
}
}
for (int i = ansSize; i >= 0; i--){
cout << ans[i];
}
cout << endl;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator