[NYLG-OJ] 77 开灯问题(白书例题)】的更多相关文章

开灯问题 时间限制:3000 ms  |            内存限制:65535 KB 难度:1           描述 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推.一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号.k≤n≤1000                     输入 输入一组数据:n和k 输出 输出开着的灯编号…
题目大意:起重机有n节,题目给出要调节的k节,每节调节成x度,求最后底部的起重机的坐标(最顶上的起点为(0,0)). 分析:一开始我看白书,看不懂他那个向量旋转的坐标是怎么来的,翻了很多博客,才发现,是自己数学基础的遗漏(都怪自己高中没好好学T.T),向量旋转涉及到复数的概念和表达. 首先复数表达式z=x+i*y=|z|*(cosx+i*sinx)(i²=-1),假设两个个复数分别为 z1=x1+y1*i=r1*(cos(p1)+i*sin(p1)) z2=x2+y2*i=r2*(cos(p2)…
#include<stdio.h> int main() { int a[1010]={0}; //储存灯的开闭情况 int n,k,i,j; scanf("%d%d",&n,&k); for(i=1;i<=k;i++) { for(j=1;j<=n;j++) { if(j%i==0) a[j]=!a[j]; } } for(j=1;j<=n;j++) { if(a[j]) printf("%d ",j); } }…
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsUAAAHXCAIAAADbX7BCAAAgAElEQVR4nO3dvVLrSMAm4L0Jci6E2B…
#include <stdio.h> #include <string.h> #define maxn 1050 int a[maxn]; int main(void) { int n,k,i,j; memset(a,0,sizeof(a)); scanf("%d%d",&n,&k); for(i=1; i<=k; i++) for(j=1; j<=n; j++) if(j%i==0)a[j]=!a[j]; for(i=1; i<…
具体题解看大白书P316 #include <iostream> #include <algorithm> #include <vector> #include <string.h> #include <stack> #include <cstdio> using namespace std; struct Edge{int u,v;}; +; int pre[maxn],iscut[maxn],bccno[maxn],dfs_clo…
开灯问题: 有n盏灯,编号为1~n,第1个人把所有灯打开,第2个人按下所有编号为2 的倍数的开关(这些灯将被关掉),第3 个人按下所有编号为3的倍数的开关(其中关掉的灯将被打开,开着的灯将被关闭),依此类推.一共有k个人,问最后有哪些灯开着?输入:n和k,输出开着的灯编号.k≤n≤1000. 附上代码: #include<stdio.h> #include<string.h> #define MAX 1000+10 int a[MAX]; int main() { , k=; //…
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-…
白书P61 - 点集配对问题 状压DP #include <iostream> #include <cstdio> #include <cstring> using namespace std; #define INF 0x3f3f3f3f struct Point { double x,y,z; }p[+]; int n; <<)+]; //dp[j]表示j对应状态(0为未配对,1为配对了)的最小距离和 double dist(int i,int j) {…
白书P60 - 硬币问题 完全背包.DP #include <iostream> #include <cstdio> #include <cstring> using namespace std; #define INF 0x3f3f3f3f #define N 1010 int n,s; int w[N]; //w表示n种硬币的面值 int dp1[N]; //dp1[j]表示刚好凑足j的最少硬币数 int dp2[N]; //dp2[j]表示刚好凑足j的最多硬币数…