纪录洛谷刷题QAQ
请统计某个给定范围 [ L , R ] [L, R] [L,R]的所有整数中,数字 2 2 2 出现的次数。
比如给定范围 [ 2 , 22 ] [2, 22] [2,22],数字$ 2$ 在数 $2 $中出现了 1 1 1 次,在数$ 12$ 中出现 1 1 1 次,在数 20 20 20 中出现 $1 $次,在数 21 中出现 1 1 1 次,在数 22 22 22 中出现 $2 次,所以数字 次,所以数字 次,所以数字 2$ 在该范围内一共出现了 6 6 6次。
2 2 2个正整数 L L L 和 R R R,之间用一个空格隔开。
数字 $2 $出现的次数。
2 22
6
2 100
20
1 ≤ L ≤ R ≤ 100000 1 ≤ L ≤R≤ 100000 1≤L≤R≤100000。
#include
#include
#include
int main() {
int n, m;
scanf("%d%d",&n,&m);
int i, num, sum = 0;
for(i = n;i <= m;i++){
int point = i;
while(point != 0){
num = point%10;
if(num == 2){
sum++;
}
point = point/10;;
}
}
printf("%d\n",sum);
return 0;
}
众所周知,在每一个彗星后都有一只 UFO。这些 UFO 时常来收集地球上的忠诚支持者。不幸的是,他们的飞碟每次出行都只能带上一组支持者。因此,他们要用一种聪明的方案让这些小组提前知道谁会被彗星带走。他们为每个彗星起了一个名字,通过这些名字来决定这个小组是不是被带走的那个特定的小组(你认为是谁给这些彗星取的名字呢?)。关于如何搭配的细节会在下面告诉你;你的任务是写一个程序,通过小组名和彗星名来决定这个小组是否能被那颗彗星后面的 UFO 带走。
小组名和彗星名都以下列方式转换成一个数字:最终的数字就是名字中所有字母的积,其中 A \texttt A A 是 1 1 1,KaTeX parse error: Undefined control sequence: \textttZ at position 1: \̲t̲e̲x̲t̲t̲t̲Z̲ 是 26 26 26。例如, USACO \texttt{USACO} USACO 小组就是 21 × 19 × 1 × 3 × 15 = 17955 21 \times 19 \times 1 \times 3 \times 15=17955 21×19×1×3×15=17955。如果小组的数字 m o d 47 \bmod 47 mod47 等于彗星的数字 m o d 47 \bmod 47 mod47,你就得告诉这个小组需要准备好被带走!(记住“ a m o d b a \bmod b amodb”是 a a a 除以 b b b 的余数,例如 34 m o d 10 34 \bmod 10 34mod10 等于 4 4 4)
写出一个程序,读入彗星名和小组名并算出用上面的方案能否将两个名字搭配起来,如果能搭配,就输出 GO
,否则输出 STAY
。小组名和彗星名均是没有空格或标点的一串大写字母(不超过 6 6 6 个字母)。
第1行:一个长度为 1 1 1 到 6 6 6 的大写字母串,表示彗星的名字。
第2行:一个长度为 1 1 1 到 6 6 6 的大写字母串,表示队伍的名字。
COMETQ
HVNGAT
GO
ABSTAR
USACO
STAY
题目翻译来自 NOCOW。
USACO Training Section 1.1
#include
#include
#include
#include
int main()
{
char name1[6];//小组名
char name2[6];//彗星名
char jm[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int num = 1;//彗星总数
int num1 = 1;//小组的总数
int i,j;
int n,m;
//puts(jm);
scanf("%s",name2);
fflush(stdin);
scanf("%s",name1);
fflush(stdin);
//遍历比较计算彗星的值
for(i = 0;i < strlen(name2);i ++)
{
for(j = 0;j < 26;j ++)
{
if(name2[i] == jm[j])
{
num = num * (j + 1);
}
}
}
n = num % 47;
//遍历比较计算小组的值
for(i = 0;i < strlen(name1);i ++)
{
for(j = 0;j < 26;j ++)
{
if(name1[i] == jm[j])
{
num1 = num1 * (j + 1);
}
//printf("%d\n",num1);
}
}
m = num1 % 47;
if(n == m)
{
printf("GO");
}
else
{
printf("STAY");
}
return 0;
}
输入一个偶数 N N N,验证 4 ∼ N 4\sim N 4∼N 所有偶数是否符合哥德巴赫猜想:任一大于 2 2 2 的偶数都可写成两个质数之和。如果一个数不止一种分法,则输出第一个加数相比其他分法最小的方案。例如 10 10 10, 10 = 3 + 7 = 5 + 5 10=3+7=5+5 10=3+7=5+5,则 10 = 5 + 5 10=5+5 10=5+5 是错误答案。
第一行输入一个正偶数 N N N
输出 N − 2 2 \dfrac{N-2}{2} 2N−2 行。对于第 i i i 行:
首先先输出正偶数 2 i + 2 2i+2 2i+2,然后输出等号,再输出加和为 2 i + 2 2i+2 2i+2 且第一个加数最小的两个质数,以加号隔开。
10
4=2+2
6=3+3
8=3+5
10=3+7
数据保证,$ 4 \leq N\leq10000$。
#include
#include
//验证是否是质数的函数
int ZHISHU(int n)
{
int a = 0;
for(int i = 2;i <= n-1;i++){
if(n % i == 0){
a++;
}
}
if(a == 0)
{
return 1;
}else{
return 0;
}
}
int main()
{
int N;//N是一个偶数
scanf("%d",&N);
for(int i = 4;i <= N;i=i+2){
// printf("%d ",i);
printf("%d",i);
printf("=");
for(int j = 2;j < i;j++)
{
int left = i-j;
if(ZHISHU(left)==1&&ZHISHU(j)==1){
printf("%d",j);
printf("+");
printf("%d",left);
break;
}
}
printf("\n");
}
return 0;
}
给定一个整数 N N N,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
一个整数 N N N。
一个整数,表示反转后的新数。
123
321
-380
-83
【数据范围】
$-1,000,000,000\leq N\leq 1,000,000,000 $。
noip2011 普及组第一题
#include
#include
int main(int argc, char *argv[]) {
int n;
while(scanf("%d",&n)!=EOF){
int m = 0, a;
while(1){
a = n%10;
m = m*10 + a;
n = n/10;
if( n == 0){
break;
}
}
printf("%d\n",m);
}
return 0;
}
一组数,分别表示地平线的高度变化。高度值为整数,相邻高度用直线连接。找出并统计有多少个可能积水的低洼地?
如图:地高变化为 0 1 0 2 1 2 0 0 2 0
两行,第一行n,表示有n个数。第2行连续n个数表示地平线高度变化的数据,保证首尾为0。(3<=n<=10000,0<=高度<=1000)
一个数,可能积水低洼地的数目。
10
0 1 0 2 1 2 0 0 2 0
3
#include
#include
int main(){
int n;//表示有n个数
scanf("%d",&n);
int num[n];
for(int i = 0;i < n;i++)
{
scanf("%d",&num[i]);
}
int start,tmp;
int ans = 0 ;
for(int i = 1;i < n;i++)
{
if(num[i-1]>num[i])
{
start = 1;
tmp = num[i];
}
if(tmp < num[i]&& start == 1){
start = 0;
tmp = 0;
ans++;
}
}
printf("%d\n",ans);
return 0;
}