getchar

UOJ188【UR #13】Sanrd (Min_25筛)

六眼飞鱼酱① 提交于 2020-02-19 04:34:51
这里 题意:说白了就是求这个 ∑ i = 1 n p s m a x ( i ) \sum_{i=1}^{n}p_{smax}(i) ∑ i = 1 n ​ p s m a x ​ ( i ) 其中 p s m a x p_{smax} p s m a x ​ 表示次小质因子,规定1和质数的次小质因子为0 做法:这道题是一道min25筛法的题,但不过不是普通的积性函数求和,需要对该算法有一定的理解。 首先我们还是以 s ( n , j ) s(n,j) s ( n , j ) 表示在 1 − n 1-n 1 − n 范围内最小质因子不小于 p j p_j p j ​ 的和。 对于质数部分没有贡献为0,对于合数部分我们枚举最小质因子 p j p_j p j ​ 的幂次,那么合数分为两部分,一部分 p j k p l ( l > j ) , p j k x p_{j}^{k}p_{l}(l>j),p_{j}^{k}x p j k ​ p l ​ ( l > j ) , p j k ​ x ,这两部分中前一部分的答案为 p j p_{j} p j ​ ,后一部分的答案 x x x 这个合数的答案,因此 s ( n , j ) = ∑ k = j ∣ p ∣ ∑ e = 1 n ( s ( n / p j k , k + 1 ) + p k ∑ x = p k n i s p r i m

字符字符串输入函数区别

…衆ロ難τιáo~ 提交于 2020-02-19 03:12:34
getch 与getchar getchar: 当程序调用getchar时,程序就等着用户按键。用户输入的字符被存放在键盘缓冲区内,直到用户按回车键为止(回车键也保存在缓冲区内)当用户键入回车后,getchar才开始从stdio流中每次读入一个字符getchar函数的返回值是用户输入的第一个字符的ASCII码,若文件结尾(End-Of-File)则返回-1(EOF),且将用户输入的字符回显到屏幕如果用户在按回车键之前不止输入了一个字符,其他字符会保存在键盘缓冲区内,等待后续getchar调用也就是说,后续的getchar程序调用不会等待用户按键,而是直接读取缓冲区内的字符,直到缓冲区内的字符读完,才会等待用户按键 getch : 接受任意一个键的输入,不用按回车就返回,且该函数的输入不会自动输出到屏幕上,需要用putchar()输出函数显示getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回, getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上 getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行 头文件: getchar() 用#include<stdio.h> getch() 用

日常

*爱你&永不变心* 提交于 2020-02-15 07:16:57
混合使用getchar()函数与scanf()函数的注意点 getchar()不会跳过空格、制表符、换行符而scanf()会。 输入验证 使用putchar()函数将要求输入整数的程序的错误输入的字符打印出来 来源: CSDN 作者: 天光渐寒 链接: https://blog.csdn.net/m0_45858339/article/details/104311963

机房测试9.23

廉价感情. 提交于 2020-02-15 06:09:40
题解之前 今天还行啊。 Set 肯定要取模。 开始还在想vector这种操作,后来一个dalao发现一定有解,然后有发现一定有一种答案是连续的一段区间,于是就切掉了。 看了题解才发现我们只是运气好。 前缀和如果有n取值,就选%n=0的那一个,不然至多只剩n-1个取值,然而又有n个前缀和。 所以必然有两个相等,输出这之间的下标即可。 #include<cstdio> #include<cctype> #include<cstring> #define FN "set" const int maxn=1e6+5; inline int read() { int x;char ch;while(!isdigit(ch=getchar())); for(x=ch-'0';isdigit(ch=getchar());x=x*10+ch-'0'); return x; } int a[maxn],mod[maxn]; int main() { freopen(FN".in","r",stdin); freopen(FN".out","w",stdout); int n;scanf("%d",&n); for(int i=1;i<=n;i++) { a[i]=read()%n; } memset(mod,-1,sizeof(mod)); int sum=0; for(int i=1;i<=n;i

机房测试8.23

[亡魂溺海] 提交于 2020-02-15 06:09:12
题解之前 咕咕咕 因为教练不在,玩去了,好几天没有更新。%%% @wans 鸽掉的几天这里有 (妹子) 。 前几天 谜题实验室 推出了,每天晚上就和几个同学一起准备AC这上面的题,结果奴隶战OTK就花了好久才A。 (祭奠天国的战歌) %%% 辣个男人 idy002 又来了。 prob 确实被我一眼秒杀的题,我却被我的傻逼做法秒杀了。 满足条件的一定只需要2道题。(n<=5时) 本来01状态压缩一下不就完事了,但是我脑子一抽,写了如下程序: #include<cstdio> #include<cctype> #include<cstring> #define FN "prob" const int maxn=1e5+5; int a[maxn],d[maxn]; int b[maxn],c[maxn]; namespace Baoli { void one(int num) { memset(b,0,sizeof(b)); bool fl=false; for(int i=1;i<=num;i++) { char ch;while(!isdigit(ch=getchar())); b[i]=ch-'0'; if(!b[i]) fl=true; } if(fl) printf("YES\n"); else printf("NO\n"); return ; } void two(int

机房测试10.22

孤人 提交于 2020-02-15 06:08:55
wzz的观察 简单的递推。 \(f[i][j]\) 表示以 \((i,j)\) 这个点为右下角时最大的正方形大小。 如果这个格子为0, \(f[i][j]=0\) 否则 \(f[i][j]=min(f[i-1][j],f[i][j-1],f[i-1][j-1])+1\) 或者可以二分答案,每一次 \(O(n*m)\) 进行check。 递推代码: #include<bits/stdc++.h> #define FN "inspect" int f[2005][2005],n,m,ans; char ch; int main() { freopen(FN".in","r",stdin); freopen(FN".out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) { while(!isdigit(ch=getchar())); if(ch-'0') f[i][j]=std::min(f[i-1][j-1],std::min(f[i-1][j],f[i][j-1]))+1; else f[i][j]=0; ans=std::max(f[i][j],ans); } printf("%d",ans); return 0; } 机房里测试的时候没有读优会少70分。 真的多到夸张

2016.6.8测试

谁都会走 提交于 2020-02-15 06:02:38
1. ly的农场 【题目描述】 在农夫ly的农场里,有好多好多的奶牛,但是由于ly喂养得太好了,奶牛们越来越懒了,导致ly不得不采取些措施:要求它们每天早上晨跑,从A农场跑到B农场。从A农场到B农场中有n–2个路口,分别标上号,A农场为1号,B农场为n号,路口分别为2..n–1号,从A农场到B农场有很多条路径可以到达,而ly发现有的路口是必须经过的,即每条路径都经过的路口,ly要把它们记录下来,这样ly就可以先到那个路口,观察奶牛们有没有偷懒,而你的任务就是找出所有必经路口。 【输入文件】 第一行两个数n,m。 接下来m行,每行两个数u和v,表示路口u和v之间有路径直达。 输入数据保证必经路口一定存在,并且每个路口都和A,B农场直接或间接连通。 【输出文件】 第一行一个数m,表示必经路口数目。 接下来m行,按从小到大的顺序依次输出每个必经路口的编号。(不包括起点,终点) 【样例输入】 6 6 1 2 2 4 2 3 3 5 4 5 5 6 【样例输出】 2 2 5 【数据范围】 对于30%的数据,n ≤ 100,m ≤ 1000。 对于100%的数据,n ≤ 2000,m ≤ 8000。 正解:暴力。。。 解题报告:   考场上面打的是tarjan,实际上举得出反例。其实直接暴力枚举就可以了,每次遍历全图,看不经过某点是否可以到达终点。 1 //It is made by jump

Helloworld代码概貌

扶醉桌前 提交于 2020-02-14 20:13:34
关于HelloWorld代码的特点的详细讲述 #include<stdio.h> void main() { printf(helloworld helloyicheng); getchar(); } (对如上的代码的注释及调试) 2.注释—程序员的解释 讲述了两张注释方式: // (2) /**/ 3.代码出错的情况下,对代码的调试的详细讲述 (在代码中通过加断点进行调试) 4讲述了#include预处理指示符的作用 (getchar和printf两个函数的声明位于stdio.h文件中) #inlcude的作用以及一些特点 5.C程序的结构 (详细讲解) (include的全局声明) (include的内部声明) (printf就是打印一段字符串) (getchar 等待输入一个字符) (如下所示,一行可以写多个语句) (main函数有且仅有一个) (C语言不提供任何语句) 来源: CSDN 作者: 韩淼燃 链接: https://blog.csdn.net/weixin_36691991/article/details/104316379

P5886 Hello, 2020!

大兔子大兔子 提交于 2020-02-13 17:21:37
https://www.luogu.com.cn/problem/P5886 我的思路没有错,但是在两个循环中弄错了输出的对象,说明我注意力还不集中啊,总是整错 # include <iostream> # include <cstring> using namespace std ; int main ( ) { int n , m , p , c = 0 ; cin >> n >> m >> p ; int * a = new int [ m + 5 ] ; memset ( a , 0 , sizeof ( a ) ) ; for ( int i = 1 ; i <= n ; i ++ ) { int count ; cin >> count ; for ( int j = 1 ; j <= count ; j ++ ) { int curl ; cin >> curl ; a [ curl ] ++ ; //这里没有搞对 } } for ( int i = 1 ; i <= m ; i ++ ) { if ( a [ i ] == p ) c ++ ; } cout << c << endl ; for ( int i = 1 ; i <= m ; i ++ ) { if ( a [ i ] == p ) cout << i << " " ; //这里输出的全是p我也是醉了

HEOI2017题解

夙愿已清 提交于 2020-02-13 15:28:39
Day 1 : T1 : 期末考试 很水的一道题,但是自己搞了大半天过不了大样例. 最后还A了... 主要思想就是枚举最后一个完成的任务的时间 然后对两部分的代价分类讨论统计一下。 (考试代码,略丑) #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; inline void read(int &x){ x=0;char ch;bool flag = false; while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true; while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x; } inline void read(ll &x){ x=0;char ch;bool flag = false; while(ch=getchar(),ch<'!');if(ch == '-') ch=getchar(),flag = true; while(x=10*x+ch-'0',ch=getchar(),ch>'!');if(flag) x=-x; } #define rg register int #define rep