UVa 10213 How Many Pieces of Land

本文介绍了如何使用欧拉公式计算几何结构的顶点和边数,并探讨了__int128这一数据类型在C/C++中的应用,包括其定义、最大值函数、输入输出等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    欧拉公式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;
} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值