給出乙個正整數n,求n開根號後的整數部分的值。n的位數不超過1000位
我果然還是好弱啊
二分乙個答案然後高精度乘法判斷,然後我壓位都打錯乙個晚上就過去了。。
這次的程式應該能當高精度的標了吧
#include
#include
#define rep(i, st, ed) for (int i = st; i <= ed; i += 1)
#define drp(i, st, ed) for (int i = st; i >= ed; i -= 1)
#define fill(x, t) memset(x, t, sizeof(x))
#define max(x, y) ((x)>(y)?(x):(y))
#define l 1001
#define mod 1000
struct numelse
}return
1; }
}inline
bool
operator
<(num b)else
if (a.len > b.len)elseelse
if (a.s[i] > b.s[i])
}return
0; }
}inline
bool
operator
<=(num b)else
}inline
bool
operator >(num b)else
if (a.len < b.len)elseelse
if (a.s[i] < b.s[i])
}return
0; }
}inline
bool
operator >=(num b)else
}inline num operator +(num b), max(a.len, b.len)};
int v = 0;
rep(i, 1, c.len)
if (v)
return c;
}inline num operator -(num b), max(a.len, b.len)};
rep(i, 1, c.len)
}while (!c.s[c.len] && c.len > 1)
return c;
}inline num operator *(num b), a.len + b.len};
rep(i, 1, a.len)
}rep(i, 1, a.len + b.len)
while (!c.s[c.len] && c.len > 1)
return c;
}inline num operator /(int b), a.len};
int v = 0;
drp(i, len, 1)
while (!c.s[c.len] && c.len > 1)
return c;
}inline
void read()
s[++ len] = v;
v = 0;
}rep(j, 0, i)
s[++ len] = v;
}inline
void read1(int x)while (x /= mod);
}inline
void output()
printf("%d", tmp.s[i]);
drp(j, i - 1, 1);
rep(k, 1, 3)
drp(k, 3, 1)
}printf("\n");
}};num one;
int main(void)else
if (qr > p)
}ans.output();
return
0;}
高精度 大整數開根
二分法 include include include using namespace std int n,nlen char str 22 int c 1000 int a 1000 b 1000 d 1000 int isok int len for i 0 ifor j 0 j2 len 1 ...
codevs 1487 大批整數排序
codevs開發者有話說 codevs自從換了評測機,新評測機的記憶體計算機制發生變化 計算記憶體的時候會包括棧空間 swap空間 這題的2m是單指記憶體空間。十分十分抱歉 抱歉現在有一大批 總數不超過10000000個 1到10之間的整數,現在請你從小到大進行排序輸出。測試資料將超過11mb。輸入...
求(3 開根5) N次方的整數部分最後3位
求 3 開根5 n次方的整數部分最後3位,請補足前導零 分析 首先 1 3 開根5 n次方的展開為 an bn 根號5 的形式 同時也有 2 3 開根5 n次方 an bn 根號5 則可以得出 1 2 2 an,so 1 2 an 2 同時可以知道0 所以只要我們可以求出 an 那答案就。嘻嘻。3 ...