POJ2054--Triangle

在ACM竞赛中遇到三角形问题时,利用Pick定理进行面积计算及整点数量估算,通过自定义函数减少计算错误,并强调动态规划的学习。分享了三角形面积计算、整点数量计算的方法,以及动态规划的基础知识。

今 天上acm,掌握的不好,写这篇的时候觉得很不好意思,因为这是别人做的,我只是在理解,他大体的思路和我一样,可是我却老是wrong answer。。。伤感啊~~Triangle

这题是学长教我们的,不过我做的不好,这题是pick定理的应用:pick定理就是A=i+d/2-1;(A:表示的是面积,i:落在网格的点的个数,d:是落在线上的点的个数)。

思路:先求出三角形的面积,已知三角形的三点求面积:s=x0*y1+x1*y2+x2*y0-x1*y0-x2*y1-x0*y2;再求落在边上的整点,用求两个数之间差值的最大公约数的方法求出落在边上的点,结果是i=A+1-d/2;

这是我上网搜到的,参考别人的,现在,我知道了最好的方法就是自定义函数,自定义函数可以分块调用,减少错误:

#include<stdio.h>
#include<math.h>
int x[3],y[3];
int gys(int a,int b)
{
 if(a==0)
  return b;
 if(b==0)
  return a;
 if(a>=b)
  return gys(b,a%b);
 else
  return gys(a,b%a);//求最大公约数的自定义函数;
}
int p(int a)
{
 if(a<0)
  a=-a;
 return a;//负数变正数。
}
int main()
{
 int b,s,i;
 while(scanf("%d%d%d%d%d%d",&x[0],&y[0],&x[1],&y[1],&x[2],&y[2])!=EOF)
 {
  if(x[0]==0&&y[0]==0&&x[1]==0&&y[1]==0&&x[2]==0&&y[2]==0)
   break;
  s=x[0]*y[1]+x[1]*y[2]+x[2]*y[0]-x[1]*y[0]-x[2]*y[1]-x[0]*y[2];
  if(s<0)
   s=-s;
  b=gys(p(x[0]-x[1]),p(y[0]-y[1]))+gys(p(x[1]-x[2]),p(y[1]-y[2]))+gys(p(x[2]-x[0]),p(y[2]-y[0]));
  i=1+(s-b)/2;
  printf("%d\n",i);
 }
}

今天上课有点小吃力,觉得好多东西都要学,好多东西都不会,今天还学了动态规划,R3要加油了哦~嘿嘿~大笑相信付出了,就一定会有进步~~嘿嘿~~
内容概要:本文详细记录了对一个Android ARM64静态ELF文件中字符串加密机制的逆向分析过程。该ELF文件的所有字符串均被加密,无法通过常规strings命令或IDA直接识别。作者通过分析发现,加密字符串存储在.rodata段,其解密所需信息(包括密文地址、长度和16位密钥)保存在.data.rel.ro段的40字节描述符中。核心解密函数sub_10F408采用自反的双pass流密码算法,结合固定密钥KEY_TERM(由.data段24字节数据计算得出),实现字节级非线性、位置与长度相关的加密。文章还复现了完整的Python解密脚本,并揭示了该保护机制的本质为代码混淆而非强加密,最终成功批量解密全部956条字符串,暴露程序真实行为,如shell命令模板、设备标识篡改、网络重置等操作。此外,文中还提及未启用的自定义壳框架及其反dump设计。; 适合人群:具备逆向工程基础的安全研究人员、二进制分析人员及对ELF保护技术感兴趣的开发者。; 使用场景及目标:①学习ELF二进制中字符串加密的典型实现方式与逆向突破口;②掌握从结构识别、函数追踪到算法还原的完整逆向流程;③理解“绑定二进制”的完整性校验设计及其局限性;④实践编写IDAPython脚本自动化提取与解密敏感数据。; 阅读建议:此资源以实战案例驱动,不仅展示技术细节,更强调逆向思维与验证方法,建议读者结合IDA调试环境,逐步跟随文中步骤进行动态分析与算法验证,深入理解每一步的推理依据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值