当前位置: 首页 > wzjs >正文

文具网站建设规划书拉新推广赚钱的app

文具网站建设规划书,拉新推广赚钱的app,做的新网站能用多久,网站改备案信息吗ACM多组数据的处理、求最大公约数的欧几里得算法、快速幂运算,以及求解循环节等问题 一、输入 问题:输入不说明有多少个Input Block 1.EOF为结束标志 EOF是-1 因为scanf返回值是成功读取数据的个数 此例子中,scanf返回的是2;2&a…

 ACM多组数据的处理、求最大公约数的欧几里得算法、快速幂运算,以及求解循环节等问题

一、输入

问题:输入不说明有多少个Input Block

1.EOF为结束标志

EOF是-1

因为scanf返回值是成功读取数据的个数

此例子中,scanf返回的是2;2!=-1,因此while执行

当所有的数都读取完了,scanf返回-1,while结束

C语言:

#include <stdio.h>
int main()
{int a, b;while (scanf("%d %d", &a, &b) != EOF)printf("%d\n", a + b);return 0;
}

C++:

while(cin >> a >> b)
{......}

2. 判断是否等于读取的个数

由scanf的含义,直接判断个数

#include <stdio.h>
int main()
{int a, b;while (scanf("%d %d", &a, &b) == 2)printf("%d\n", a + b);return 0;
}

问题:输入不说明有多少个Input Block,但以某个特殊输入为结束标志 

推荐用 if 语句

#include <stdio.h>
int main()
{int a, b;while (scanf("%d%d", &a, &b) == 2){if (a == 0 && b == 0) break;printf("%d\n", a + b);}return 0;
}

问题:输入一整行字符串

C语言(不推荐使用 `gets`):
 

#include <stdio.h>int main(){char buf[20];gets(buf); // 不推荐使用,因为存在缓冲区溢出的风险printf("%s\n", buf);return 0;
}

C++语言示例(推荐使用 `getline`):
 

#include <iostream>
#include <string>
using namespace std;int main(){string buf;getline(cin, buf); // 使用 std::getline 读取字符串cout << buf << endl;return 0;
}

C++语言示例(使用字符数组):
 

#include <iostream>
using namespace std;int main(){char buf[255];cin.getline(buf, 255); // 使用 cin.getline 读取字符数组cout << buf << endl;return 0;
}

gets 在C语言中是不安全的,因为它不检查输入的长度,容易导致缓冲区溢出。

在C++中,推荐使用 `std::getline` 或 `cin.getline` 来安全地读取字符串。

二、输出

注意输出空行、空格、无空格的细节。

三、算法做题思想

1.时刻注意数据溢出

给定一个正整数 nn,请计算 2+3+…+n2+3+…+n 的结果,其中 n<50000。

Sample input:
10
Sample output:
55

法一:暴力——循坏——超时

法二:公式——爆int(超过int范围)

解决爆int:1.long long 类型 %lld (64位整数)2.高精度 等


2.转化问题——问题简单化

给定两个正整数,计算这两个数的最小公倍数。
样例输入:

10 14
4 6
样例输出:
70
12

法一:暴力——数据大会超时

法二:公式——lcm(A,B)=A*B/gcd(A,B)

注:公式先乘后除会爆int,因为:乘后可能会超范围  避免爆int:先除后乘

由此,求最小公倍数变为求最大公倍数gcd(A,B)——辗转相除法(欧几里得算法)

辗转相除法:

x是要求的gcd

①10和14都是x的倍数

②把14分为10和4,那么4也是x的倍数

证明:10=ax;14=bx;(10+4)=bx;ax+4=bx;4=(a-b)x;

③求10和14的gcd可以转变为10和4的gcd

以此类推:

int gcd(int da, int xiao)//不用在乎da和xiao的顺序:会交换回来
{int temp;while (xiao != 0){temp = da % xiao;da = xiao;xiao = temp;}return da;
}

3.寻找循环节规律

给定一个正整数 N ,请计算 N 个 N 相乘的结果的个位数是多少(1<=N<=1000000000)。

Sample Input  
3  
Sample Output  
7

法一:纯暴力枚举法——超时

法二:微暴力——每次模10再乘N——可能超时

法三:找规律:

每次个位存起来,什么时候循环了就记循环量,然后直接求余。

个位0~9中,0 1 5 6的次方为它本身

每个数的循环节个数不同,有1、2、4个。可以都按4算

有一种Fibonacci数列,定义如下:

F(0) = 7

F(1) = 11,

F(n) = F(n-1) + F(n-2)

给定一个n(n < 1,000,000),请判断F(n)能否被3整除,分别输出yes和no。

 变换: f(n)%3——(F(n-1) + F(n-2))%3——F(n-1)%3 + F(n-2)%3

每个f%3后发现规律:1 2 0 2 2 1 0 1   1 2 0 2 

1 2 0 2 2 1 0 1 为一个循环节

求A^B(A的B次方)的最后三位数表示的整数(1 <= A, B <= 1000000000)

Sample Input  
2 3  
12 6  

Sample Output  
8  
984

法一:暴力

法二:快速幂算法(二分加速)

把123^234=(123^2)^117

递归:

int power(int a, int n)
{int ans;if(n == 0) ans = 1;    // 结束条件else{ans = power(a * a, n / 2);    // 递归调用if(n % 2 == 1) ans *= a;    // n为奇数}return ans;
}

循环:

int power(int a, int n)
{int ans = 1;while (n){if (n % 2) ans = ans * a; // 奇数情况a = a * a; // 底数平方n = n / 2; // 指数减半}return ans;
}

 

http://www.dtcms.com/wzjs/244818.html

相关文章:

  • 怎么做淘宝店网站收录百度seo软件
  • 深圳专业返利网站开发如何优化网络延迟
  • 苏州公司网站建设公司百度app浏览器下载
  • 本地搭建linux服务器做网站百度广告公司联系方式
  • 工厂型企业做网站seo优化上海牛巨微
  • 做期货看资讯什么网站好互联网营销师是哪个部门发证
  • 做视频背景音乐专用网站营销广告文案
  • 网站验证码 出不来小说网站排名
  • 网站建站目标免费网站收录网站推广
  • 南昌建网站那家好长沙百度快速排名
  • 国内简洁网站全网引流推广
  • 制作精美网站建设售后完善百度指数免费查询入口
  • 网站内容要求长春seo公司
  • 网站建设的论坛百度网页入口官网
  • 网站空间送域名seo排名优化seo
  • harry louis做受网站搜索引擎优化的简称是
  • 手机网站开发 视频教程福州外包seo公司
  • logo在线制作网站今日新闻快报
  • asp网站制作设计教程广告制作公司
  • linux网站备份营销推广seo
  • 网站建设西班牙语此网站三天换一次域名
  • 郴州网红打卡景点志鸿优化网下载
  • 恩施网站开发seo基础入门视频教程
  • 广东seo网站推广代运营数字营销包括哪六种方式
  • 北京网站建设多少钱韩国今日特大新闻
  • 怎样做网站搜索推广成都seo推广员
  • xp asp 网站建设网络营销的特点有哪些?
  • 房产网站建设方案论文国外网站seo
  • 网站前台需求文档平台推广策划方案
  • 郑州今日新闻seo是什么岗位