UVa 10213 How Many Pieces of Land

    欧拉公式VE+F=2所以找出顶点数和边数就行了,枚举两个点,在左半边的如果有i个,右边有ni2个,交点个数  i(ni2)(其实感觉不太明白为啥钦定交点不重合,感觉是因为重合了会使答案变差),然后这条线段被分成了  i(ni2)+1部分,然后外围凸包上的边有n条,圆弧分成了n段,所以V,E就能算出来了


关于__int128

  讲道理的话,gcc是不认识_ _int128   这种数据类型的,比如Dev cpp也是无法编译的,但是提交到大部分 OJ 上是可以编译且能用的。 C/C++ 标准 IO 是不认识__int128这种数据类型的,因此要自己实现 IO ,其他的运算,与 int 没有什么不同。

定义

  __int128 n,r,g,b,T;
  __int128 ans;
  __int128 f[1025][1025];

取最大值函数

  __int128 getmax(__int128 a,__int128 b){
    if (a>b) return(a);else return(b);
  }

输出

  void print(__int128 x){
       if (x==0) return;
    if (x) print(x/10);
    putchar(x%10+'0');
  }

其余与整形类似,对于略大于LL范围值计算方便

#include<cstdio>
#include<cstring>
#include<cmath> 
#include<algorithm>
#include<map> 

using namespace std;
typedef long long ll;

void print(__int128 ans){
	 if(ans==0)  
        return;  
    print(ans/10);  
    printf("%d",ans%10);   
}

int main(){
    int T;
	scanf("%d",&T);
	while(T--){
		int n;
		scanf("%d",&n);
		__int128 x=n;
		__int128 ans= (x*x*x*x + 23*x*x-6*x*x*x-18*x)/24+1; 
		print(ans);
		puts("");
	} 
    return 0;
} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值