n-nuo
【题目描述】
Time Limit: 1000 ms Memory Limit: 256 mb 输入A,B 输出A+B -1,000,000,000<=A,B<=1,000,000,000
【输入描述】
输入包含两个整数A,B,用一个空格分隔。
【输出描述】
输出一个整数,表示A+B的值。
【输入样例】
5 8
【输出样例】
13
【代码实现】
#include <stdio.h> int main(){ int a,b; scanf("%d %d",&a,&b); printf("%d\n",a+b); return 0; }
n-nuo
【题目描述】
Time Limit: 1000 ms Memory Limit: 256 mb 对于长度为6位的一个01串,每一位都可能是0或1,一共有64种可能。它的前几个是: 000000 000001 000010 000011 000100 请按从小到大的顺序输出这64种01串。
【输入描述】
无
【输出描述】
输出64行,每行一个01串。
【代码实现】
#include <stdio.h> int main(){ int i,temp,j; int a[6]; for(i=0;i<64;i++){ temp = i; for(j=0;j<6;j++){ a[j] = temp%2; temp /= 2; } for(j=5;j>=0;j--){ printf("%d",a[j]); } printf("\n"); } return 0; }
#include <stdio.h> void func(int n); int main(){ int i; for(i=0;i<64;i++){ func(i); printf("\n"); } return 0; } void func(int n){ int j; int a[6]; for(j=0;j<6;j++){ a[j] = n%2; n /= 2; } for(j=5;j>=0;j--){ printf("%d",a[j]); } }
#include<iostream> #include<stack> using namespace std; int main() { for (int num = 0; num < 64; num++) { stack<int> s; int tmp = num; for (int i = 1; i <= 6; i++) { s.push(tmp%2); tmp /= 2; } while (!s.empty()) { cout << s.top(); s.pop(); } cout << endl; } return 0; }
#include<stdio.h> int main(){ int i,j; for(i=0;i<64;i++){ int res = 0; int temp = i; int cnt = 0; int a[6]={0}; while(temp>0){ a[cnt] = temp % 2; temp /= 2; cnt++; } for(j = 5;j>=0;j--){ res = res * 10 +a[j]; } printf("%06d\n",res); } return 0; }
#include <bits/stdc++.h> using namespace std; int main(){ int A[6]={0}; int i,j; for(i=0;i<64;i++) { printf("%d%d%d%d%d%d\n",A[0],A[1],A[2],A[3],A[4],A[5]); A[5]++; for(j=5;j>0;j--) { if(A[j] == 2) { A[j]= 0; A[j-1]++; } } } return 0; }
#include<bits/stdc++.h> using namespace std; void Badd(char *s,int i); int main(){ char s[6]={'0','0','0','0','0','0'}; for(int i=0;i<64;i++){ cout<<s<<endl; Badd(s,5); } return 0; } void Badd(char *s,int i){ //二进制加法器 if(i==-1)return; if(s[i]=='0')s[i]='1'; else{ s[i]='0'; return Badd(s,i-1); } }
n-nuo
【题目描述】
Time Limit: 1000 ms Memory Limit: 256 mb 请统计某个给定范围[L, R]的所有整数中,数字 2 出现的次数。 比如给定范围[2, 22],数字 2 在数 2 中出现了 1 次,在数 12 中出现 1 次,在数 20 中出现 1次, 在数 21 中出现 1次,在数 22 中出现 2 次,所以数字 2 在该范围内一共出现了 6次。
【输入描述】
2个正整数 L 和 R,之间用一个空格隔开。 1≤L≤R≤100000
【输出描述】
数字 2 出现的次数。
【代码实现】
#include <stdio.h> int main(){ int i,j,temp,count=0; int l,r; scanf("%d %d",&l,&r);//输入l,r for(i=l;i<=r;i++){ temp = i; while(temp>0){ if(temp%10==2){//取个位值是否和2相等,count++ count++; } temp /= 10; } } printf("%d\n",count); return 0; }
n-nuo
【题目描述】
Time Limit: 1000 ms Memory Limit: 256 mb 喜欢数学的Lucy经常向哥哥LF请教一些题目,哥哥总能很快就帮她解决。这不,Lucy又有难题要请教哥哥了Lucy的难题。 Lucy的难题是有关翻转数的: 翻转数就是把一个数的所有数字以相反顺序写出来,即原来的第一个数字成为最后一个,而原来的最后一个则成为第一个。我们把未翻转的数称为翻转数的原数。 例 如:6789的翻转数是9876,而6789就是9876的原数。 你一定注意到了,一个翻转数的原数可以有很多个,例如18的原数可以是81、810、8100等等。因此我们假定:通过翻转数求原数时,所求得的原数的个 位不为零。即18的原数就是81。 Lucy现在给出2个翻转数A、B。 这两个翻转数各自对应的原数是C、D,C 与D的和为 S ,Lucy想知道 S是多少?
【输入描述】
输入为多组测试数据,每行一组,包含两个整数A、B,两数中间以空格分隔,0<A<100 000 000,0<B<100 000 000。
【输出描述】
输出只有一个整数,即为S。 注意:请不要输出翻转数前面无用的零。例:对于0056,只需输出56。
【代码实现】
#include <stdio.h> int reverse(int x);//函数声明 int main(){ int a,b; while((scanf("%d %d",&a,&b))!=EOF){ int s = reverse(a) + reverse(b); printf("%d\n",s); } return 0; } int reverse(int x){//实现翻转函数 int result = 0; while(x){ result = result * 10 + x % 10; //x%10表示取个位 x /= 10;//表示舍去个位 } return result; }
#include <stdio.h> int main() { int a, b; while(~scanf("%d %d", &a, &b)) { int ans1 = 0, ans2 = 0; while(a) { ans1 = ans1 * 10 + a % 10; a /= 10; } while(b) { ans2 = ans2 * 10 + b % 10; b /= 10; } printf("%d\n", ans1 + ans2); } return 0; }
#include<iostream> using namespace std; int reverse(int num) { int result = 0;//翻转结果 while (num > 0) { result = result * 10 + num % 10; num /= 10; } return result; } int main() { int a, b; while (cin >> a >> b) {//EOF结束输入 int c = reverse(a); int d = reverse(b); cout << c + d << endl; } return 0; }
n-nuo
【题目描述】
Time Limit: 1000 ms Memory Limit: 256 mb 众所周知,北校区的博学楼是有11层楼,并且有三个电梯。假设电梯上升一层需要6秒,下降一层需要4秒,在每在一层停留需要3秒。电梯初始在1楼,现在给你电梯要去楼层顺序,例如3,2,5代表电梯从1楼到达三楼,再从三楼到达2楼,再从2楼到达5楼。问通过这些操作,电梯需要花多少时间?例如3,2,5,从1楼到3楼需要2 * 6秒,然后停留3秒,再从3楼到2楼需要4秒,再停留3秒,再由2楼到5楼需要3 * 6秒,停留3秒。所以总共需要2 * 6 + 3 + 4 + 3 + 3 * 6 + 3 = 43。如果上次要停留的楼层与这次相同,则只需要再停留3秒即可。
【输入描述】
输入:输入一个整数T(1 <= T <= 100),代表有T组样例。 每组样例有一个整数n(1 <= n <= 100),代表有n层楼是电梯需要去的。然后给出n个整数,给出的整数小于等于11,代表电梯到达楼层的顺序。
【输出描述】
输出:对每组样例,输出一个整数,代表今天博学楼开放教室的总数。每个输出结果后面均包含换行符。
【代码实现】
#include <stdio.h> int func(int a[],int n);//函数声明 int main(){ int t,n,i; scanf("%d",&t);//有t组数据输入 while(t--){ int result = 0;//耗时 scanf("%d",&n);//记录每组数据的个数 int a[n];//定义数组,存放每组数据 i = n; while(i--){ scanf("%d",&a[n-1-i]);//记录现在所在楼层 } result = func(a,n);//计算耗时 printf("%d\n",result);//输出result } return 0; } int func(int a[],int n){ int sum = 0,i; int last = 1;//定义初始楼层 int now;//定义现在所在楼层 for(i=0;i<n;i++){ now = a[i];//现在所在楼层 if(now>last){ sum += 3 + (now - last) * 6;//电梯往上 }else{ sum += 3 + (last - now) * 4;//电梯往下 } last = now;//重新修改上一层楼层 } return sum; }
#include <iostream> using namespace std; int main(){ int m; //接受数据的组数 int n; //每组数据的个数 cin >> m; while(m--){ int count = 0; //所耗时间总数 int last = 1; //上一次电梯所在楼层 int now; //目前电梯所在楼层数 cin >> n; count += 3*n; //电梯一共要停留n次,每次3秒 int values[n]; int j=0; //记录数组元素已赋值个数 /*---开始向数组赋值---*/ while (cin >> now && j<n ) { values[j++] = now; if (cin.get() == '\n') //遇到回车,终止 break; } /*---开始按楼层计算运动时间---*/ for(int i=0;i<n;i++) { now=values[i]; if(now > last) count += (now - last)*6; else count +=( last- now)*4; last = now; } cout << count << endl; } return 0; }
#include<iostream> using namespace std; int main() { int T; cin >> T; while (T--) { int n; cin >> n; int ans = 3*n;//停留时间 int pre = 1, next;//之前停留的楼层,接下来要去的楼层 while (n--) { cin >> next; if (pre > next) ans += 4*(pre-next);//下降 else if (pre < next) ans += 6*(next-pre);//上升 //else 上次要停留的楼层与这次相同 pre = next; } cout << ans << endl; } return 0; }
n-nuo
/*给定一个字符串,反序输出。*/ #include <stdio.h> #include <string.h> #define N 100 int main(){ char s[N]; gets(s); int i,len = strlen(s); for(i=len-1;i>=0;i--){ printf("%c",s[i]); } return 0; }
#include<iostream> #include<stack> using namespace std; int main() { string s; cin >> s; for (int i = s.length()-1; i >= 0; i--) { cout << s[i]; } cout << endl; return 0; }
#include <stdio.h> #include <string.h> int main() { char s[100] = {'0'}, c; int top = 0; while (scanf("%c", &c) != EOF && c != '\n') { s[top] = c; top++; } while (top--) { printf("%c", s[top]); } return 0; }
#include <stdio.h> void PrintReverseString() { char c; scanf("%c", &c); if ('\n' == c) return; else { PrintReverseString(); printf("%c", c); } } int main() { PrintReverseString(); return 0; }
n-nuo
/*输出100到1000之间能被5和6同时整除的数, 输出格式为每10个数为一行。相邻两个数之间用空格隔开(注意每一行末尾没有空格)*/ #include <stdio.h> int main(){ int i,cnt=0; for(i=100;i<=1000;i++){ if(i%5==0&&i%6==0){ cnt++; if(cnt%10==0){ printf("%d\n",i); }else{ printf("%d ",i); } } } return 0; }
#include <iostream> using namespace std; int main() { int count = 1;//计数,用于控制输出格式 for (int num = 100; num <= 1000; num++) { if (num%5 == 0 && num%6 == 0) { if (count%10 == 0) cout << num << endl; else cout << num << " "; count++; } } return 0; }
n-nuo
/*给定一个int型整数,输出这个整数的二进制的0和1的个数。 输入样例:15 输出样例:count0=28 count1=4*/ #include <stdio.h> int main(){ int n; scanf("%d",&n);//输入int整数 int cnt = 0;//定义1的个数 while(n > 0){ if(n % 2){ cnt++;//记录1的个数 } n /= 2; } printf("count0=%d count1=%d\n",32-cnt,cnt); return 0; }
#include <iostream> using namespace std; int main() { int num; cin >> num; int count = 0; //int有32位,需要保证0和1的总数为32,所以只需要记录1的个数即可 while (num > 0) { if (num%2 == 1)//该二进制位为1 count++; num /= 2; } cout << "count0=" << 32-count << " count1=" << count << endl; return 0; }
n-nuo
/*从1—20之间随机抽取5个数,输出抽取出来的5个数之和 与剩余未被抽取的15个数之和的总和。 输入描述:无 输出描述:输出一个答案在单独的一行*/ #include <stdio.h> #include <math.h> int main(){ int i,a[5],sum1=0,sum=0; for(i=0;i<5;i++){ sum1 += rand()%20+1; } for(i=1;i<=20;i++){ sum += i; } sum = sum - sum1 + sum1; printf("%d",sum); return 0; }
#include <stdio.h> int main(){ int sum = 0; int i; for(i = 1; i <= 20; i++){//遍历 sum += i; } printf("%d\n",sum); return 0; }
#include <iostream> using namespace std; int main() { int ans = 0; for (int i = 1; i <= 20; i++) ans += i; cout << ans << endl; return 0; }
n-nuo
/*输入n个数进行排序,要求先按奇偶后按从小到大的顺序排序。*/ #include <stdio.h> void sort(int arr[], int n); int main(){ int n, i; int a[1000]; scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%d", &a[i]); } sort(a, n);//升序排序 for(i = 0; i < n; i++){//输出奇数 if(a[i] % 2){ printf("%d ",a[i]); } } for(i = 0; i < n; i++){//输出偶数 if(a[i] % 2 == 0){ printf("%d ",a[i]); } } printf("\n"); return 0; } void sort(int arr[], int n){//升序排序 int i, j, k, tmp; for(i = 0; i < n - 1; i++){ k = i; for(j = i + 1; j < n; j++){ if(arr[j] < arr[k]){ tmp = arr[k]; arr[k] = arr[j]; arr[j] = tmp; } } } }
/*输入n个数进行排序,要求先按奇偶后按从小到大的顺序排序。*/ #include <stdio.h> void sort(int arr[], int n); int main(){ int n, i; int a[1000]; scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%d", &a[i]); } sort(a, n);//升序排序 for(i = 0; i < n; i++){//输出奇数 if(a[i] % 2){ printf("%d ",a[i]); } } for(i = 0; i < n; i++){//输出偶数 if(a[i] % 2 == 0){ printf("%d ",a[i]); } } printf("\n"); return 0; } void sort(int arr[], int n){//升序排序 int i, j, tmp; for(i = 0; i < n - 1; i++){ for(j = 0; j < n - 1 - i; j++){ if(arr[j] > arr[j + 1]){ tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } } }
#include <bits/stdc++.h> //万能头文件 using namespace std; bool cmp(int a,int b){ if(a%2==b%2){//若同奇同偶 return a<b;//直接从小到大排序 }else{ return (a%2) > (b%2);//奇数在偶数前 } } int main(){ int n; int a[1005] = {0}; cin >> n; for(int i=0;i<n;i++){ cin >> a[i]; } sort(a,a+n,cmp); for(int i=0;i<n;i++){ cout << a[i] << " "; } cout << endl; return 0; }