牛客编程巅峰赛S2第9场 - 钻石&王者 B题
牛牛和网格三角形
https://ac.nowcoder.com/acm/contest/9977/B
B题
c++
大数
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * @param n string字符串 三角形的长和高 * @return bool布尔型 */ bool judge(string n) { // write code here int k = n.size(); if((n[k-1] - '0')%2 ==0) return false; vector<int> num; for(int i = k-1; i>=0; i--) num.emplace_back(n[i] - '0'); int add = 1; for(int i = 0; i<k; ++i){ num[i] += add; add = num[i]/10; num[i]%=10; } if(add) {num.emplace_back(1); k++;} for(; k>0; ){ if(k == 1 && num[0] ==1) return true; if(num[0] % 2 ==1) return false; int i = k-1; add = (num[i]%2) * 10; if(num[i] == 1) k--; num[i] /= 2; for(--i; i >= 0; --i){ num[i] += add; add = (num[i]%2) * 10; num[i] /= 2; } if(add != 0) return false; } return false; } };